Java Study
자바의 정석 개인적 공부 요약
초코너무조코
2025. 1. 15. 18:47
728x90
1장: 자바 소개
- 자바 개요: 플랫폼 독립적, 보안성, 멀티쓰레드, 객체 지향 언어.
- 특징: 한 번 작성하면 어디서나 실행 가능(WORA), 자동 가비지 컬렉션, 견고한 에러 처리.
- JDK, JRE, JVM:
- JDK: 자바 프로그램 컴파일 및 실행을 위한 개발 키트.
- JRE: 자바 바이트코드를 실행하는 런타임 환경.
- JVM: 바이트코드를 기계어로 변환하는 가상 머신.
2장: 변수와 데이터 타입
- 기본 데이터 타입: byte, short, int, long, float, double, char, boolean.
- 참조 데이터 타입: 배열, 객체, 문자열.
- 형 변환: 암시적(자동) 및 명시적(수동) 변환.
- 상수: final 키워드로 변경 불가능한 변수 정의.
3장: 연산자와 제어문
- 연산자:
- 산술: +, -, *, /, %.
- 관계: ==, !=, <, >, <=, >=.
- 논리: &&, ||, !.
- 비트: &, |, ^, ~.
- 제어문:
- 조건문: if, else, switch.
- 반복문: for, while, do-while.
- 점프문: break, continue.
4장: 클래스와 객체
- 클래스 구조: 필드, 메서드, 생성자.
- 객체 생성: new 키워드 사용.
- 캡슐화: private 필드와 public getter/setter로 구현.
- 정적(static) vs 인스턴스 멤버:
- static: 모든 인스턴스가 공유.
- 인스턴스 멤버: 각 객체에 고유.
5장: 메서드
- 메서드 종류:
- 인스턴스 메서드.
- 정적 메서드 (static 키워드 사용).
- 메서드 오버로딩: 동일한 이름의 메서드, 다른 매개변수.
- 가변 인자 (varargs):
public void printArgs(String... args) { for (String arg : args) { System.out.println(arg); } }
6장: 상속
- 개념: 부모 클래스의 필드/메서드를 재사용.
- 주요 용어:
- super: 부모 클래스 멤버에 접근.
- 메서드 오버라이딩: 부모 메서드를 자식 클래스에서 재정의.
- final 클래스/메서드: 상속 또는 오버라이딩 불가.
7장: 다형성
- 컴파일 타임(정적): 메서드 오버로딩.
- 런타임(동적): 메서드 오버라이딩.
- 업캐스팅과 다운캐스팅:
Animal a = new Dog(); // 업캐스팅 Dog d = (Dog) a; // 다운캐스팅
8장: 예외 처리
- 핵심 개념:
- try-catch-finally: 예외 처리.
- 사용자 정의 예외: Exception을 상속하여 구현.
- 체크 예외 vs 언체크 예외:
- 체크 예외: 처리하거나 선언 필요.
- 언체크 예외: 런타임 시 예외.
9장: java.lang 패키지와 유용한 클래스
- Object 클래스:
- 주요 메서드: equals(), hashCode(), toString().
- String 클래스:
- 불변 클래스, 주요 메서드: substring(), indexOf().
- Math 클래스:
- 주요 메서드: abs(), ceil(), floor(), pow(), random().
10장: 입출력(I/O)
- 파일 처리:
- FileReader, FileWriter: 텍스트 파일.
- FileInputStream, FileOutputStream: 바이너리 파일.
- 직렬화:
- ObjectOutputStream으로 객체 저장.
- ObjectInputStream으로 복원.
11장: 컬렉션 프레임워크
- 인터페이스: List, Set, Map.
- 클래스:
- ArrayList, LinkedList, HashSet, HashMap.
- 주요 메서드:
- add(), remove(), contains(), get(), put().
12장: 제네릭, 열거형, 애너테이션
- 제네릭: 타입 안전 컬렉션.
List<String> list = new ArrayList<>();
- 열거형(Enum): 상수를 정의하며 메서드 추가 가능.
- 애너테이션: 코드 메타데이터 (@Override, @Deprecated).
13장: 쓰레드
- 쓰레드 생성:
- Thread 클래스.
- Runnable 인터페이스.
- 동기화:
- synchronized 키워드.
- ReentrantLock, Condition.
- 주요 메서드:
- start(), run(), join(), sleep().
14장: 람다와 스트림
- 람다 표현식:
- 문법: (params) -> { body }.
- 스트림(Stream):
- 컬렉션을 처리하는 API, 주요 메서드: filter(), map(), reduce().
- Collectors 클래스:
- 결과를 리스트, 그룹화 등으로 변환 (toList(), groupingBy()).
15장: 입출력 심화
- 스트림 종류:
- 바이트 스트림: InputStream, OutputStream.
- 문자 스트림: Reader, Writer.
- 버퍼 스트림:
- BufferedReader, BufferedWriter: 효율적인 I/O.
- 직렬화:
- 객체를 바이트 스트림으로 변환.
16장: 네트워크 프로그래밍
- 소켓 프로그래밍:
- TCP: Socket, ServerSocket.
- UDP: DatagramSocket, DatagramPacket.
- HTTP 통신:
- HttpURLConnection을 사용한 요청/응답.
- 멀티쓰레드 서버:
- 다중 클라이언트를 동시에 처리.
- URL 클래스:
- 인터넷 자원의 주소를 분석 및 제공.
728x90