📝 오늘의 강의 요약
핵심 키워드: 예외 처리(Exception), 제네릭(Generics), 컬렉션 프레임워크(Collections Framework)
- Java: 프로그램 안정성을 위한 예외 처리 기법과 코드 재사용성을 높이는 제네릭 학습
- Java: 데이터를 효율적으로 관리하기 위한 컬렉션 프레임워크(List, Set, Map) 구조 파악
- HTML: 학습한 내용을 바탕으로 실제 홈페이지 구조 구현 실습 진행
⚠️ 예외 처리 (Exception Handling)
1. 프로그램 오류의 종류
- 컴파일 에러: 소스 코드 작성 시 문법 오류로 인해 컴파일이 되지 않는 상태
- 런타임 에러: 실행 중 발생하는 오류로, 자바에서는 이를 '에러'와 '예외'로 구분
- 논리적 에러: 실행은 정상이나 결과가 의도와 다르게 나오는 경우
2. 예외 클래스 계층 구조
- Checked Exception: 컴파일 시점에 체크하며 반드시 예외 처리가 필요 (예: IOException, FileNotFoundException)
- Unchecked Exception (RuntimeException): 개발자의 실수로 발생하는 예외로 컴파일 시 강제하지 않음 (예: NullPointerException, ArithmeticException)
3. 예외 처리 방법
- try-catch-finally: 발생한 예외를 직접 처리하는 방식
- finally 블록은 예외 발생 여부와 관계없이 항상 실행되어 자원 해제 등에 사용
- throws: 메서드 선언부에 사용하여 예외 처리를 호출한 상위 메서드로 위임
📦 제네릭 (Generics)
1. 제네릭의 정의 및 목적
- 클래스나 메서드에서 사용할 데이터 타입을 외부에서 지정하는 기법
- 타입 안정성: 컴파일 시점에 잘못된 타입 사용을 방지하여 런타임 에러 예방
- 형 변환 생략: 꺼낼 때 별도의 캐스팅((String)) 작업이 필요 없어 코드가 간결해짐
2. 주요 타입 매개변수 관례
- <T> : Type / <E> : Element / <K> : Key / <V> : Value
📚 컬렉션 프레임워크 (Collections Framework)
1. 주요 인터페이스 특징
| 인터페이스 |
특징 |
대표 구현 클래스 |
| List |
순서 유지, 중복 허용 |
ArrayList, LinkedList |
| Set |
순서 미유지, 중복 불허 |
HashSet, TreeSet |
| Map |
Key-Value 쌍, Key 중복 불허 |
HashMap, TreeMap |
2. List 계열 비교
- ArrayList: 내부적으로 배열 사용, 인덱스 검색이 빠르나 데이터 삽입/삭제 시 속도 저하
- LinkedList: 노드로 연결된 구조, 삽입/삭제가 빈번한 경우 유리
3. Set & Map 계열 비교
- HashSet / HashMap: 해싱 기법을 사용하여 정렬되지 않으나 검색 속도가 매우 빠름
- TreeSet / TreeMap: 이진 탐색 트리 기반으로 키 값을 기준으로 자동 정렬 수행
🌐 HTML 홈페이지 구현
- 시각적 요소와 구조의 분리: HTML로 뼈대를 잡고 CSS로 디자인 적용
- 웹 접근성(Accessibility): .sr-only 등 스크린 리더 사용자를 위한 숨김 텍스트 기법 적용
🛠️ 실습 메모 및 팁
- printStackTrace(): 예외 발생 당시의 호출 스택 정보를 상세히 출력하여 디버깅에 활용
- getMessage(): 발생한 예외의 원인을 간략한 메시지로 확인
- Collections 활용: 데이터의 특성(중복 여부, 정렬 필요성)에 따라 적절한 자료구조 선택이 성능의 핵심