Java 19

[Java] 텍스트 블록

개요Java에서는 개행을 포함한 문자열을 선언할 때 + 연산자와 개행 문자를 함께 사용하는 문자열 조합을 활용해 선언을 해왔다.// 문자열 조합String html1 = "\n" + " \n" + " Hello, world\n" + " \n" + "\n";그러나 Java 15부터 텍스트 블록이 도입됨에 따라 보다 가독성 있는 여러 줄 문자열을 선언할 수 있게 되었다. 이번 글에서는 Java의 텍스트 블록에 대해서 적어둔다. 텍스트 블록텍스트 블록은 큰따옴표 세 개(""")로 열고 닫을 수 있는데, """ 뒤에 바로 문자열이 올 수 없다는 특징이 있다. """ ~ """ 블록 내에는 반드시 하나 이상의 개행이 포함되..

Java 10:17:45

[IntelliJ] Gradle 빌드하기

개요IntelliJ 상에서 Java 애플리케이션을 개발하고 이제 빌드를 해야 하는데, 문서상으로는 CLI로 안내가 되어있었다. 하지만 IntelliJ 내장 JDK로 개발하고 있어 Java를 설치하라는 오류가 발생하는 문제가 있었다. 확인해 보니 IntelliJ 내에서 빌드 기능을 지원하고 있는 걸로 보여 방법을 기록해 둔다. 방법1. 오른쪽 메뉴의 Gradle 버튼 클릭 2. Tasks 접근 3. 실행할 태스크 더블클릭빌드를 더블클릭하면 프로젝트에 build 경로가 생기면서 libs 경로 아래에 jar 파일이 생성된다. 참고 문서https://gist.github.com/sungkwangsong/3717edde69390238e3de836e8364ccdbhttps://lucas-owner.tisto..

Java 2026.03.24

[Java] Record

RecordJava 14 버전에서 도입된 클래스 타입으로 변경 불가(immuatable) 데이터 객체를 만드는 기능을 제공한다. 기존 클래스와 비슷하지만 더 간결하게 데이터 객체를 만들 수 있다. 특징Record 클래스는 다음과 같은 특징을 가지고 있다. - 간결성 : 간결한 코드를 작성하기 위해 도입되어, 정의한 필드를 기반으로 메서드가 자동 생성된다. 코드의 양을 줄임으로써 가독성을 확보한다.- 메서드 자동 생성 : 필드를 기반으로 equals, hashCode, toString, getter을 자동 생성하여 반복적인 코드 작성을 피한다.- 불변성 : 필드가 설정되면 값을 변경하지 못하여 데이터 안정성을 높인다.- final 생략 : 필드를 불변으로 취급하기 때문에 자동으로 final 처리를 한다..

Java 2026.03.23

[Java] generic - 2

개요2026.03.03-[Java] generic - 1에서 generic이 무엇인지, 기본적인 개념 위주로 정리했다. 이번 글에서는 조금 더 세부적이고 소소한 내용을 정리한다. 타입 파라미터 할당 가능 타입generic 할당은 Reference 타입만 가능하다. int, double과 같은 원시(Primitive) 타입 대신 Integer, Double을 사용해야 한다. 클래스로 지정하기 때문에 개체 지향 프로그래밍의 다형성 원리도 적용된다. 예로 들어 Apple, Banana라는 두 개 클래스가 Fruit이라는 클래스의 자식 클래스일 때, generic에 Fruit이라고 지정하면 Apple, Banana도 취급할 수 있다.class Fruit { }class Apple extends Fruit {..

Java 2026.03.10

[Java] generic - 1

개요2026.02.25-[Java] ArrayList 등의 글에서 리스트 내 데이터 원소의 타입을 지정할 때 데이터 타입을 꺽쇠로 감싸서 지정하는데, 이는 제네릭(generic)이라는 개념이다. 뭔지 정확하게 모르고 사용을 해왔으니 이번 글에서는 generic에 대해서 조금 다뤄볼까 한다. genericgeneric은 사전적으로 '일반적인'이라는 의미를 가지고 있는데, Java에서는 하나의 값이 데이터 형식에 의존하지 않고 여러 데이터 타입을 가질 수 있도록 하는 방법을 의미한다. 다른 말로는 클래스 내에서 사용할 데이터 타입을 외부에서 지정하는 기법이라고 한다.ArrayList list = new ArrayList();주로 List 등에 사용되는데, List와 같은 자료구조를 직접 구현하여 배포하려고..

Java 2026.03.06

[Java] ArrayList

개요이번 글에서는 Java에서 매우 흔하게 사용하고 있는 ArrayList에 대해서 정리한다. ArrayListArrayList는 Array의 불편함을 해소하기 위해 나온 개념으로, 연속적인 데이터의 리스트이다.내부적으로 Object[]을 이용하고 있으며, 인덱스를 이용해 요소에 빠르게 접근할 수 있다. 배열과 다르게 크기가 가변적(동적 할당)이지만, 배열의 크기가 가득 찰 때마다 copy 하는 방식으로 크기를 조정하기 때문에 지연이 발생할 수 있다. 데이터를 중간에 삽입하거나 삭제하는 경우에는 리스트 내 공간 조정으로 인해 요소의 위치가 앞뒤로 이동하기 때문에 동작이 느리다. 사용법ArrayList를 사용할 때는 패키지를 import 해야 한다.import java.util.ArrayList; 아래..

Java 2026.03.04

[Java] Stream - 사용법

개요2026.02.10-[Java] Stream 개념에서 Java의 Stream 개념에 대해 알아보았다. 이번 글에서는 실제로 어떻게 사용하는지에 초점을 맞춰서 내용을 정리해 본다. 생성Stream은 데이터 집합인 컬렉션, 다시 말해 Array, List, Set, Map 등으로부터 생성할 수 있다. 컬렉션이 제공하는 stream 메서드를 사용해 Stream을 생성한다.List list = new ArrayList();list.add("Apple");list.add("Banana");list.add("Kiwi");Stream stream = list.stream(); 또는 Stream에서 제공하는 generate, iterate 메서드 등을 사용해서 생성하는 것도 가능한다. generate는 무한한 값..

Java 2026.02.24

[Java] Stream 개념

개요최근 기본적인 반복문과 조건문을 활용한 Java 코드를 AI에게 개선해달라 요청했더니 Stream이라는 개념을 가진 코드를 제안해주었다. 사용하고 유지보수를 하기 위해서는 관련 개념을 이해하고 있어야 할 것 같아 정리해보려고 한다. Stream프로그래밍 개발에서 Stream이란 '일련의 데이터 흐름'을 의미한다. 위키피디아의 경우에는 시간 상에 나타나는 일련의 데이터 요소로 정의하며 연속적인 데이터 흐름에 초점을 맞추고 있다.Java의 Stream은 이러한 데이터 흐름을 표준화된 방법으로 쉽게 처리할 수 있도록 지원하는 클래스 집합이다. 경우에 따라, 요소의 Stream에 함수형 연산을 지원하는 클래스라 정의하기도 한다. 다시 말해 Java Stream을 이용하여 데이터를 함수형 연산을 통해 표준화..

Java 2026.02.23

[Java] HashSet

개요2026.02.06-[Java] HashMap에서 HashMap에 대해서 살펴보았는데, 이번 글에서는 Set을 구현한 HashSet에 대해서 살펴본다. HashSet이름에서 추측할 수 있듯, HashSet은 Set 인터페이스를 구현한 클래스이다. 객체를 중복 저장할 수 없고 저장 순서를 유지하지 않는다는 Set의 성질을 그대로 이어받는다. 만약 순서를 유지해야 하거나 자동 정렬이 필요한 경우에는 LinkedHashSet, TreeSet과 같은 다른 구현 클래스를 사용하면 된다.Set은 중복을 허용하지 않기 때문에 보통 중복을 제거하기 위해 많이 활용한다. 또한 비선형 구조로 인덱스가 존재하지 않기 때문에 값을 추가하거나 삭제할 때에는 Set에 값이 있는지 확인할 필요가 있기 때문에 List에 비해 ..

Java 2026.02.13

[Java] HashMap

개요개발하고 있는 Java 애플리케이션에서 HashMap을 사용하는데, Java를 놓은지 오래 되었다보니 기본 개념만 겨우 기억하고 있다. 개발 진행에 필요한 개념을 다시 돌아보자. HashMapMap 인터페이스를 구현한 대표적인 Map 컬렉션이다. Map 인터페이스를 상속하고 있어 키와 값으로 구성된 Entry 객체를 저장하는 구조라는 Map의 성질를 그대로 갖고 있다. 키와 값은 모두 객체이며, 값은 중복을 허용하지만 키는 허용하지 않는다. 특히 HashMap의 경우에는 Hashing을 사용해 많은 양의 데이터를 검색하는 성능이 뛰어나다.내부에 키와 값을 저장하는 자료 구조를 가지며, 해시 함수를 통해 키, 값이 저장되는 위치를 결정하므로 사용자는 그 위치를 알 수 없다. 또한 삽입 순서와 저장 ..

Java 2026.02.12
1 2