2026/01 30

제네릭 (Generic)

1. 제네릭이란?클래스나 메서드에서 사용할 타입을 외부에서 지정할 수 있도록 하는 문법이다.List list = new ArrayList();타입 안정성 보장명시적 캐스팅 제거컴파일 타임 오류 검출IDE 타입 추론 가능2. Generic Class기본 구조class Box { private T value; public void set(T value) { this.value = value; } public T get() { return value; }}// 사용Box box = new Box();box.set("hello");String s = box.get(); // 캐스팅 불필요 타입 매개변수 TT는 실제 타입이 아님컴파일 시 전달된 타입으로 치환됨 ..

람다 표현식 2

1. 익명 클래스 vs 람다람다는 익명 클래스의 대체 문법이지만 이 둘은 완전히 같지 않다! 익명 클래스new Runnable() { @Override public void run() { System.out.println(this); }};새로운 클래스 생성this -> 익명 객체 자신람다 Runnable r = () -> { System.out.println(this);};클래스 생성 Xthis -> 외부 객체차이 구분 익명 클래스 람다생성 구조클래스 생성클래스 없음this자기 자신외부 객체바이트코드클래스 파일invokedynamic목적객체 생성동작 전달 2. 타입 추론람다식에 타입이 존재하지 않는다. 하지만 컴파일은 정상적으로 되는데 이는 함수형 인터페이스가 이미 ..

람다 표현식

1. 람다 표현식 등장 배경자바는 전통적으로 객체지향 언어이다. 클래스 -> 객체 -> 메서드 호출 즉, 동작 하나를 전달하려면 객체가 반드시 필요했었음. 하지만 현대 프로그래밍에서는 다음과 같은 요구가 커졌음이 동작만 넘기고 싶다굳이 클래스가 필요할까?함수를 값처럼 넘길 수는 없나? 2. 람다 표현식이란?람다는 익명 함수라고 설명하지만 이는 정확하지 않음. 람다는 메서드를 구현한 객체를 간결하게 표현하는 문법이다. 자바에는 여전히 함수 타입이 없고, 람다는 객체로 동작한다 !! 3. 람다 표현식 기본 문법(매개변수) -> {실행문}// 예시 (a,b) -> {a + b}// 이 코드와 완전 동일 new Comparator() { @Override public int compare(Intege..

Weekly Paper#3

1. HashSet 내부 동작과 중복 제거 메커니즘 Java에서 HashSet은 내부적으로 HashMap 을 사용한다. HashMap의 실제 저장 구조는 배열과 같다. 배열(table) ├── 0번 버킷 (내부에는 LinkedList가 들어감.) ├── 1번 버킷 ├── 2번 버킷 -> Node -> Node -> Node (LinkedList) ├── ... └── n번 버킷이 배열을 해시 테이블(Hash Table)이라고 부르고, 각 칸을 버킷(bucket)이라고 한다. HashSet에 값 하나를 넣을 때 실제로 일어나는 일set.add("apple");// 1. hashCode() 실행 ex) apple.hashCode() = 93029210int hash = "apple".hashCode();//..

Weekly Paper 2026.01.19

Weekly Paper#2

1. OCP, SRPSRP(단일 책임 원칙) : 하나의 클래스는 하나의 책임만 가져야 한다는 원칙 코드의 이해가 쉬워지고 유지보수가 용이해짐OCP(개방 폐쇄 원칙) : 확장 시 새로운 요구사항이 생겼을 때 기능을 추가할 수 있어야 하고, 기능 추가 떄문에 기존 클래스의 코드를 수정하지 않아야 한다OCP, SRP 위반// SRP, OCP 둘다 위반class PaymentService { public int pay(String type, int price) { int discount = 0; if (type.equals("RATE")) { discount = price * 10 / 100; } else if (type.equals("FIXED")..

Weekly Paper 2026.01.12

List, Set, Map

1. Collection 계열과 Map 계열은 출발부터 다르다List, Set -> Collection 인터페이스 계열Map -> Collection이 아님!이 차이가 사용 방식 자체를 결정한다. Iterable 하다는 말은 순회가 가능하다!! 2. Iterable = 순회 가능 (List, Set은 가능)List, Set 자료는 요소를 하나씩 꺼내서 반복 처리할 수 있다. for (String value : list) { System.out.println(value);}Iterable 인터페이스를 구현하고 있기 때문에 List, Set은 for, each로 돌릴 수 있다. 3. Map은 for-each가 안됨Map은 Iterable 하지 않다! Map은 구조 자체가 key-valueCollecti..

JCF가 왜 필요할까?

1. 왜 컬렉션이 필요했을까?배열의 문제점크기가 고정됨중간 삽입/삭제가 너무 번거롭다기능이 없어 정렬, 검색을 직접 구현해야 한다int[] arr = new int[3];// 크기를 늘리고 싶으면 -> 새로운 배열에 값을 복사해줘야 함...-> 이러한 불편함을 해결하기 위해 등장한 것이 컬렉션 프레임워크이다! 2. Java Collection Framework(JCF)란?데이터를 저장하고 관리하는 표준화된 자료구조 + 인터페이스 + 구현체 모음이다. 핵심 목표는 자료구조를 직접 만들지 말고, 상황에 맞는 컬렉션을 선택해서 쓰자!! 3. List - 순서 O, 중복 O특징 저장 순서 유지중복 허용인덱스로 접근 가능ArrayList, LinkedListList list = new ArrayList();lis..

예외 처리 문법

1. try-catch-finally 기본 형태try { // 예외 발생 가능 영역} catch (Exception e) { // 특정 예외 처리} finally { // 항상 실행} 예제 1 : 파일 읽기 try { FileInputStream fis = new FileInputStream("data.txt"); // 파일 처리} catch (FileNotFoundException e) { System.out.println("파일을 찾을 수 없습니다.");} finally { System.out.println("파일 처리 종료");} 2. try-with-resources try (FileInputStream fis = new FileInputStream("data..

Java & Spring/Java 2026.01.07

예외 개념과 자바 예외 구조

1. 예외(Exception)란 무엇인가예외란 프로그램 실행 중 발생하는, 정상적인 흐름을 방해하는 상황이다예외는 컴파일 오류가 아니다예외는 런타임 중 발생예외는 예측 가능하며, 통제 대상이다int result = 10;컴파일은 정상, 실행 시 오류 발생, 프로그램이 즉시 종료되므로 예외처리가 없으면 프로그램은 복구 기회 없이 종료된다. 2. 예외 처리가 필요한 이유프로그램 강제 종류 방지 : 일부 기능 실패가 전체 시스템 실패는 아니기에 흐름을 제어 가능오류 원인 명확화 : 단순 조건보다 의미가 명확하고, 원인 추적이 가능하다책임 분리 : 오류 발생과 오류 처리를 분리해 가독성이 향ㅅㅇ됨예외는 실패가 아닌 의도를 가진 신호라고 볼 수 있다 3. 자바의 예외 계층 구조ErrorsJVM 레벨의 치명적인 문..

Java & Spring/Java 2026.01.07

Enum 필드, 메서드, Switch, 실무 팁

1. Enum에 필드와 생성자 추가하기 Enum도 클래스이다. 따라서 필드, 메서드, 생성자를 가질 수 있다public enum OrderStatus { READY("결제 대기"), PAID("결제 완료"), SHIPPED("배송 중"), DONE("배송 완료"); private final String description; OrderStatus(String description) { this.description = description; } public String getDescription() { return description; }}Enum 생성자는 항상 private각 Enum 상수는 생성자를 통해 고유한 상태를 갖는다관..

카테고리 없음 2026.01.07