[Java] Enum 파헤치기
·
Language/Java
* 개념 복습과 학습 정도를 파악하고자 포스팅합니다!* Claude, ChatGPT를 활용하여 이미지를 생성하고 활용합니다. Enum1. Enum이란?서로 관련된 상수들을 타입으로 묶어 정의하는 것.Java 5 이전엔 상수를 static final int 로 정의했는데, 타입 안정성이 없어서 실수가 잦았습니다.// 옛날 방식 — 상수를 int로 정의public static final int MON = 0;public static final int TUE = 1;public static final int WED = 2;void doWork(int day) { ... } // int면 뭐든 들어옴. 실수 가능doWork(999); // 컴파일 통과! 하지만 잘못된 값// Enum 방식enum Day { MO..
[Java] 스트림 API(Stream API) 완전히 파헤치기
·
Language/Java
* 개념 복습과 학습 정도를 파악하고자 포스팅합니다!* Claude, ChatGPT를 활용하여 이미지를 생성하고 활용합니다. 스트림 API1. 스트림?스트림은 데이터의 흐름입니다.컬렉션이나 배열의 데이터를 선언형으로 처리하는 파이프라인을 만들어주죠.반복문 없이 무엇을 할지만 적으면 됩니다!// 기존 방식 — 어떻게 처리할지 명시List result = new ArrayList();for (String name : names) { if (name.startsWith("A")) { result.add(name.toUpperCase()); }}Collections.sort(result);// 스트림 방식 — 무엇을 할지만 선언List result = names.stream() .f..
[Java] 람다 표현식과 함수형 인터페이스 파헤치기
·
Language/Java
* 개념 복습과 학습 정도를 파악하고자 포스팅합니다!* Claude, ChatGPT를 활용하여 이미지를 생성하고 활용합니다. 람다 표현식과 함수형 인터페이스1. 람다가 왜 나왔을까?Java 8 이전엔 함수를 값처럼 전달하려면 익명 클래스를 사용해야 했어요. 이로 인해 코드가 장황하고 읽기 힘들다는 단점이 있었죠!List names = Arrays.asList("Charlie", "Alice", "Bob");Collections.sort(names, new Comparator() { @Override public int compare(String a, String b) { return a.compareTo(b); }}); 람다가 도입되면서 아래 코드처럼 바뀝니다.Collecti..
[Java] 제네릭(Generic) 완전히 파헤치기
·
Language/Java
* 개념 복습과 학습 정도를 파악하고자 포스팅합니다!* Claude, ChatGPT를 활용하여 이미지를 생성하고 활용합니다. 제네릭(Generic)1. 제네릭이란?제네릭은 클래스, 인터페이스, 메서드를 정의할 때 타입을 파라미터로 받을 수 있게 하는 기능입니다.쉽게 말하면 타입을 나중에 정하겠다는 약속이죠! 저도 제네릭은 잘 몰라서 좀 찾아봤었는데요. 제네릭이 없던 시절 자바 코드를 볼까요?// 제네릭 없는 시절 (Java 1.4 이전)List list = new ArrayList();list.add("Hello");list.add(123); // String인지 Integer인지 모름!String s = (String) list.get(0); // 강제 형변환 필요String s2 = ..
[Java] 컬렉션 프레임워크
·
Language/Java
* 개념 복습과 학습 정도를 파악하고자 포스팅합니다 컬렉션 프레임워크(Collections Framework)1. 컬렉션 프레임워크??저도 사실 자바를 처음 접했을 때 컬렉션 프레임워크라는 명칭만 듣고 괜히 "아, 이거 너무 어려운거 아닐까?" 라며 겁을 먹곤 했었는데요!사실 겁먹을게 아니고 그냥 학부생일 때, 또는 CS공부할 때 자료구조 배우잖아요? 컬렉션 프레임워크는 자료구조 형태를 자바 클래스로 구현한 모음이라고 생각하시면 편할 것 같습니다!위 구조를 요약하자면, 최상단의 Iterable → Collection 에서 List, Set, Queue 세 갈래로 뻗어나가고, Map은 Collection과는 무관한 별도 계층입니다. 실선 화살표는 구현 관계, 점선은 상속 관계입니다. util.*; 를 im..
[Java] 예외 처리 (Exception Handling)
·
Language/Java
* 개념 복습과 학습 정도를 파악하고자 포스팅합니다 예외(Exception)1. 예외란 무엇인가프로그램 실행 중 발생할 수 있는 예기치 않은 상황을 의미합니다.예외가 발생하면 프로그램이 비정상적으로 종료될 수 있으므로, 이를 적절히 처리하여 프로그램의 안정성을 높여야 합니다. 예외가 발생할 수 있는 대표적인 상황1. 존재하지 않는 파일을 열려고 할 때2. 0으로 나누기를 시도했을 때3. 배열의 범위를 벗어난 인덱스에 접근할 때4. null 객체의 메소드를 호출할 때2. 예외 계층 구조Java의 모든 예외는 Throwable클래스를 상속받으며, 크게 Error와 Exception으로 나뉩니다.Error는 시스템 레벨의 심각한 오류로 복구가 불가능합니다. 반면 Exception은 프로그램에서 처리할 수 있는..