Java 57

생성자 vs 정적 팩토리 메서드 vs 빌더 패턴

Java 에서 객체를 생성하는 방법생성자 (Constructor)정적 팩토리 메서드 (Static Factory Method)빌더 패턴 (Builder Pattern)각각의 특징과 장단점을 살펴보자 !1. 생성자 (Constructor)특징:객체를 생성하는 기본적인 방식.필수 파라미터를 직접 전달하여 객체를 만든다.new 키워드를 사용하여 객체를 생성한다.장점:간단하고 직관적이다.특별한 로직 없이 기본적인 객체 생성이 필요할 때 유용하다.단점:파라미터가 많아지면 가독성이 떨어지고, 순서에 의존하게 된다.선택적 필드를 처리하기 어려움.public class User { private String name; private int age; public User(String name, int a..

Java/문법 2025.05.09

빌더 패턴 (Builder Pattern)

Java에서 객체를 생성할 때 생성자나 정적 팩토리 메서드를 많이 사용한다.하지만 필드 수가 많고 선택적으로 값을 지정해야 하는 상황에서는 Builder 패턴이 훨씬 더 유연하고 명확한 해법이 된다.빌더 패턴이란?객체 생성의 복잡성을 줄이고, 가독성과 유지보수성을 높이기 위한 설계 패턴필드가 많은 객체를 가독성 있게 생성할 수 있다.생성자처럼 순서에 의존하지 않으며, 필요한 필드만 선택적으로 설정 가능하다.기본 문법 (직접 구현)public class User { private final String username; private final String email; private final int age; private User(Builder builder) { thi..

Java/문법 2025.05.09

[📃 자바 입문] 클래스와 객체

자바 = 객체지향 언어프로그램을 구성하는 요소가 객체이며, 이것이 상호작용 하도록 프로그래밍한다.클래스객체를 만들기 위한 틀객체를 만들기 위해 반드시 클래스를 먼저 말들어야 한다. 자동차 클래스 생성Car.java란 파일을 만든다.저장을 하면 이클립스는 컴파일하여 디스크에 Car라는 클래스를 생성한다.자동차 클래스가 생성되었다고 해서 자동차가 만들어 진것은 아니다.public class Car{} 자동차 객체 생성하기 (자동차 만들기)new 연산자: new연산자 뒤에 나오는 생성자를 이용하여 메모리에 객체를 만들라는 명령.메모리에 만들어진 객체를 인스턴스(instance)라고도 한다.이렇게 만들어진 객체를 참조하는 변수가 c1 , c2 이다.위의 코드가 실행되면 Car라는 객체가 2개가 만들어지고 각각..

Java/강의 2025.05.01

[📃 자바 입문] 배열

배열변수가 많아져 하나하나 선언하기 힘들 때 배열을 사용 배열은 같은 데이터 타입을 가진 연속된 메모리 공간으로 이루어진 자료구조이다.같은 데이터 타입을 가진 여러개의 변수가 필요할 때 사용한다.1차원 배열 배열 생성 방법처음 선언할 때 만들어진 크기가 변하지 않는다.int[] array1 = new int[4]; 배열에 값을 저장하는 방법array1[0] = 1;array1[1] = 2;array1[2] = 3;array1[3] = 4; 배열에 저장된 값을 꺼내서 사용하는 방법int value = array1[2]; System.out.println(array1[1]); 선언과 동시에 초기화하는 방법int[] array2 = new int[]{1,2,3,4,5}; * 배열의 길이를 알아내는 방..

Java/강의 2025.05.01

[📃 자바 입문] 반복문

반복문어떠한 것을 반복적으로 사용하고 싶을 때 사용 반복문의 종류while 문do-while 문for 문while 문조건문의 실행 결과가 true일 동안 반복해서 실행한다.// 조건이 true일 동안 반복해서 실행문을 실행합니다.while(조건문){ 실행문; }public class WhileExam2 { public static void main(String[] args) { int total = 0; int i = 1; //while에서 사용할 변수를 선언 while(i do-while 문while문의 경우 조건이 만족하지 않는다면 한번도 반복하지 않을 수 있다.do while문의 경우는 무조건 한번은 실행되는 반복문이다.do{ 실행문;}whi..

Java/강의 2025.05.01

List.of()로 만든 리스트에서 add()가 안 되는 이유

문제 상황 (예시)List.of() 로 초기화 한 리스트에 값을 추가할 수 없는 문제List items = List.of("apple", "banana");items.add("cherry"); // 예외 발생 java.lang.UnsupportedOperationException문제 원인List.of(...)는 Java 9부터 제공되는 불변 리스트 (Immutable List) 를 생성하는 정적 팩토리 메서드이다.불변(immutable): 값을 추가하거나 제거할 수 없다.null 불허: List.of("a", null)처럼 null이 포함되면 NullPointerException 발생수정 불가: add(), remove(), set() 등 변경 연산은 모두 UnsupportedOperationExcept..

[📃 자바 입문] 조건문

조건문어떤 문장은 수행하고 싶고, 어떤 문장은 수행하고 싶지 않을때 사용 조건문의 종류if 문switch 문if 문 if 문조건식이 true 일 경우에만 실행문이 실행된다.if(조건식) 다음의 { } 를 생략할 수 있다. 하지만, 생략할 경우 if문에 포함되는 실행문은 단 한 줄만 포함된다.if(조건식){ 실행문; 실행문;} if - else 문조건식이 true일 경우 if 블록의 실행문이 실행되고, flase 일 경우 else 블록의 실행문이 실행된다.if(조건식){ 실행문; 실행문;}else{ 실행문;} if - else if - else문처음 if문의 조건식의 조건문이 true일 경우 처음 if문의 블록이 실행되고, false일 경우 다음 조건식의 결과에 따라 실행 ..

Java/강의 2025.04.30

[📃 자바 입문] 연산자

연산자와 연산식연산: 데이터를 처리하여 결과를 산출하는 것x = y + z;연산자(Operations): 연산에 사용되는 표시나 기호 (+, -, *, /, &, =, ...)피연산자(Operand): 연산 대상이 되는 데이터 (리터럴, 변수)연산식(Expressions): 연산자와 피연산자를 이용하여 연산의 과정을 기술한 것 연산자의 종류부호 연산자값의 부호를 나타내는 단항 연산자+ (양수 부호), - (음수 부호)증감 연산자변수의 값을 1씩 증가하거나 감소시킴++ (증가), -- (감소)전위: ++a, 값을 먼저 증가시키고 그 값을 사용후위: a++, 현재값을 먼저 사용하고, 그 후 증가산술 연산자+ (덧셈), - (뺄셈), * (곱셈), / (나눗셈), % (나머지)비교 연산자두 값을 비교하여 bo..

Java/강의 2025.04.30

[📃 자바 입문] 기본형 타입과 타입(형)변환

기본형기본형 타입은 가장 기본이 되는 데이터 타입으로써 정수형, 실수형, 문자형, 불린형을 의미한다.논리형논리형은 크기가 1byte이고 true와 false 중에 한 가지 값을 가질 수 있다.문자형문자형은 char로 2byte크기를 가집니다. 문자는 작은따옴표를 이용하여 한 글자를 표현할 수 있다.정수형정수형은 정수를 표현하는 데이터 타입인데 표현할 수 있는 정수의 범위에 따라서 다양하게 제공된다.정수형에서 가장 자주 사용하는 int는 4바이트이다.long형은 8byte크기를 가진다. int 보다 더 큰 범위의 정수를 표현하고 싶을때 사용한다.실수형실수형은 float과 double형이 있다.float은 4바이트, double은 8바이트로 double은 float보다 더 큰 범위의 실수를 표현할 수 있다...

Java/강의 2025.04.30