본문 바로가기

Java24

값 객체(Value Object)와 불변성 값 객체(Value Object)란? 1000원짜리 지폐 A와 1000원짜리 지폐 B가 있다.A와 B는 서로 다른 객체하지만 둘 다 1000원이라는 가치를 가짐A와 B가 다른 객체라는게 아니라 가지고 있는 값(value)가 중요!! public final class Money { private final long amount; // 불변성 public Money(long amount) { if (amount * hashCode : HashMap의 키나 HashSet의 원소 쓰일 때, 기준이 되는 값. 값 객체(Value Object)의 장점1. 불변성을 보장한다. (뒤에서 자세히 설명)2. 가독성을 올려주고 실수를 방지한다.public class Customer { pri.. 2026. 6. 12.
의존성 주입(Dependency Injection)과 조립자 의존성(Dependency)이란?어떤 객체가 자신의 기능을 수행하기 위해 필요로 하는 외부 요소 한 객체가 다른 객체를 사용할 때, 의존성이 있다고 한다. public class OrderService { private Rider rider = new Rider(); // 의존성 ... } 의존성 주입(Dependency Injection)이란? 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮춘다. 의존성 주입(Dependency Injection) 이 필요한 이유1. 객체 간 결합도 감소특정 구현체에 강하게 의존하지 않으므로,.. 2026. 6. 12.
Collection 주요 기능 - Map 저장, 조회, 삭제HashMap map = new HashMap();// 키가 "A"인 값에 1 저장map.put("A", 1); // "A"키가 없을 때만 10 저장map.putIfAbsent("A", 10); // "B"키 조회, 없으면 기본값 0int value = map.getOrDefault("B", 0);// "A"키 존재 여부 확인boolean isContainKey = map.containsKey("A");// 값 1 존재 여부 확인boolean isContainValue = map.containsKey(1);// Map 크기 확인int size = map.size();// 빈 Map인지 확인boolean isEmpty = map.is.. 2026. 6. 11.
Collection 주요 기능 - List 정렬 (Sort)기본 정렬 List numbers = Arrays.asList(5, 2, 8, 1, 9); // 숫자 오름차순 정렬 Collections.sort(numbers); // numbers = [1,2,5,8,9] // 숫자 내림차순 정렬 Collections.sort(numbers, Collections.reverseOrder()); // numbers = [9,8,5,2,1] List words = Arrays.asList("banana", "apple", "cherry"); // 문자 정렬 Collections.sort(words); // words = ["apple","banana","cherry"]중첩 정.. 2026. 6. 11.
쓰레드(Thread) 쓰레드(Thread)프로그램 내에서 독립적으로 실행되는 하나의 작업 단위 멀티 쓰레드(Multi-Thread) 구현Thread 클래스를 상속받아 쓰레드 구현 가능Thread.run() 메서드를 오버라이드 해서 쓰레드가 수행할 작업 정의 가능start() 메서드로 새로운 쓰레드가 생성되고 run()으로 실행됨ex) 쓰레드 2개가 각각 0~9까지 출력하는 멀티 쓰레드 프로그램 public class MyThread extends Thread{ @Override public void run() { String threadName = Thread.currentThread().getName(); System.out.println("::: " + threadName + "쓰레드.. 2026. 6. 11.
제네릭을 통해 계산기 프로그램의 기능 확장 기존 정수 계산기 public String Calculate(int firstNum, int secondNum, char operSymbol) { int answer; // 더하기 if (operSymbol == '+') { answer = firstNum + secondNum; } // 빼기 else if (operSymbol == '-') { answer = firstNum - secondNum; } // 곱하기 else if (operSymbol == '*') { answer = firstNum * secondNum; .. 2026. 6. 8.