Java 44

[Spring] 의존성 주입(DI, Dependency Injection) 방식

필드 주입생성자 주입setter 주입 1. 필드 주입 (@Autowired 사용)@Servicepublic class MyService { @Autowired private MyRepository myRepository; public String getData() { return myRepository.fetch(); }} 장점코드가 간결하다.단점final 키워드 사용 불가 (불변성 떨어짐).테스트 시 mock 객체 주입이 어렵다. (테스트 어려움)순환 참조 문제를 컴파일 타임에 잡기 힘듦. 2. 생성자 주입@Servicepublic class MyService { private final MyRepository myRepository; // 생성자 하나 →..

Java 2025.05.04

[Java] int와 Integer과 null

import java.util.PrioirtyQueue;... PriorityQueue prioirtyQueue = new PrioirityQueue(); Integer value = priorityQueue.poll(); // poll()은 큐가 비어있을 경우 null 반환 // int value는 null 값 처리 불가능 // int로 할 경우, NullPointerException이 발생 if (value == null) { // null일 경우 } 컬렉션 자료구조를 사용할 때, 컨테이너가 비어있으면 NullPointException이 발생하는 경우가 종종 있다.이 때, Integer로 반환받으면 null을 처리할 수가 있다. int는..

Java 2025.05.03

[Java] RuntimeException

RuntimeException은JVM의 정상적인 실행 중에 발생하는 예외의 슈퍼 클래스이다.RuntimeException 및 해당 서브 클래스는 unchecked exception이다.unckecked exception은 메서드 또는 생성자의 실행에 의해 발생한다.메서드 또는 생성자 경계 외부로 전파될 경우 메서드 또는 생성자의 throws 절에서 선언될 필요가 없다.예외 처리 구문이 없어도 컴파일 오류가 발생ㅜ하지 않는다.대표적인 RuntimeException1. NullPointerException(객체가 null인 상태에서 해당 객체의 메서드나 필드에 접근하려 할 때 발생)2. ArrayIndexOutOfBoundsException(배열의 인덱스가 범위를 벗어났을 때 발생)3. ClassCast..

Java 2025.05.03

[Java] Queue의 add/offer, remove/poll, element/peek 의 차이

import java.util.Queue;public class Main { public static void main(String[] args) { // Queue 선언 Queue q = new LinkedList(); // 추가 q.add(x); q.offer(x); // 제거 q.remove(); q.poll(); q.clear(); // 맨 앞 값 조회 q.element(); q.peek(); }} 에러를 발생 or null 또는 false 반환 추가add()값 추가 성공 시 true 반환큐가 꽉 찬 경우 IllegalStateException 에러 발생offer()값 추가 성공 시..

Java 2025.05.03

[Java] 접근 제어자

UML 표기법- : private~ : default# : protected+ : public_ (속성이나 메서드 아래의 밑줄 표시) : 정적 멤버public모두가 접근 가능protected상속 / 같은 패키지 내의 클래스에서 접근 가능[default]같은 패키지 내의 클래스에서 접근 가능private본인만 접근 가능 상속을 받지 않았다면 객체 멤버는 객체를 생성한 후 객체 참조 변수를 이용해 접근해야 한다.정적 멤버는 클래스명. 정적 멤버 형식으로 접근하는 것을 권장한다.※ 정적 메소드 (static 메소드) 안에서는 객체 변수 접근이 불가능!!!!public인 정적 변수 pubSt 접근 범위ClassA ClassA.pubStpubStthis.pubSt사용 가능사용 가능사용 가능같은 패키지상속한 경우..

Java 2025.05.03

[Java] Map.Entry<K, V> / Map의 key, value 접근법

entry (엔트리): Map의 키(Key)와 값(value)의 쌍 하나하나를 말한다.Map map = new HashMap();map.put("apple", 1);// 내부적으로는 다음과 같은 entry로 저장된다.// Entry: "apple" = 1 entrySet(): map.entrySet()은 Map의 모든 엔트리들을 Set으로 반환하는 메소드이다.for (Map.Entry entry : map.entrySet()) { System.out.println(entry.getKey() + " = " + entry.getValue()); // entry.getKey() -> key값 // entry.getValue() -> value 값} keySet()for (String..

Java 2025.05.01

[Java] LinkedHashMap과 HashMap의 차이

HashMap저장 순서: 보장하지 않음→ 삽입한 순서와 무관하게 키들의 순서가 매번 바뀔 수 있음.성능: 매우 빠름 (평균 O(1) 조회/삽입/삭제)null 허용: 키에 하나, 값에 여러 개 null 허용용도: 순서가 중요하지 않은 일반적인 키-값 저장Map map = new HashMap();map.put("apple", 1);map.put("banana", 2);map.put("cherry", 3);for (Map.Entry entry : linkedHashMap.entrySet()) { System.out.println(entry.getKey() + " = " + entry.getValue());}// 출력 순서 예: banana, cherry, apple (불규칙)LinkedHashMap저장..

Java 2025.05.01