Java Development Kit Version 17 API Specification
자바 참고 자료
1) equals()

2) hashCode() : 잘게 자른 숫자다.
code : 리턴이 int 다.
hash : 잘게 잘랐다.

숫자 하나로 다르다를 빠르게 판단하겠다!
디폴트(object) : 참조값 리턴
내가 만든 것 : 기존 해시코드 활용

컬렉션에서 쓰인다.
다 구현체있음. 인터페이스다.
- list : 배열 단점 보완 → 길이 고정 없어짐, 크기 줄이고 늘리기 가능
- set : 중복 없이 저장할때 → set에서 해시가 쓰인다.
- map : 키와 값 쌍으로 관리할때 (키:값)

3) toString()


4) 레코드


## 1교시
예외처리
### 예외
프로그램 실행 중, 즉 런타임에 발생하여 프로그램 명령의 정상적인 흐름을 방해하는 원치 않거나 예상치 못한 이벤트입니다.
프로그램에서 예외를 포착하고 처리할 수 있습니다.
메서드 내에서 예외가 발생하면 exception object 가 생성됩니다.
여기에는 예외 이름, 설명, 예외 발생 당시 프로그램 상태 등 예외에 대한 정보가 포함됩니다.
### 오류
JVM(Java Virtual Machine)의 메모리 부족, 메모리 누수, 스택 오버플로 오류, 라이브러리 비호환성, 무한 재귀 등과 같은 복구 불가능한 조건을 나타냅니다.
error는 일반적으로 프로그래머의 통제 범위를 벗어나므로 오류를 처리하려고 해서는 안 됩니다. .
### 예외의 종류
https://www.w3schools.com/java/java_ref_errors.asp
### throw
- 메서드 내부에서 사용
- 하나의 예외를 명시적으로 던지는 데 사용
- throw 키워드의 구문에는 던져야 할 예외의 인스턴스가 포함
### throws
- 메서드 선언에서 사용
- 여러개의 예외를 선언하고 자동으로 일치하는 예외를 던짐
- throws 키워드에는 던져야 할 예외의 클래스 이름이 포함
### call stack (stack trace)
예외가 발생한 메소드에 도달하기 위해 호출된 메소드 목록
### Exception handler
호출 스택을 검색하여 발생한 예외를 처리할 수 있는 코드 블록
checked exception (컴파일 타임 예외) : 실행 이전 에 확인 할 수 있는 예외입니다
unchecked exception (런타임 예외) : 실행 이후에 확인 할 수 있는 예외입니다
### NullPointerException (NPE)
자바에서 널 포인터 예외는 런타임 예외입니다,
자바는 null 값을 객체 참조에 할당 할 수 있습니다
- null 객체의 메소드를 사용
- null 객체의 필드에 접근하거나 수정
- 마치 배열인 것처럼 null의 길이를 취합니다.
- 마치 배열인 것처럼 null 개체의 슬롯에 액세스하거나 수정
- Throwable 값인 것처럼 null을 throw합니다.
### Null 값이 필요한 이유는 무엇입니까?
- Java에서 null은 값이나 참조가 없음을 나타내는 특수 값입니다. 변수나 개체에 현재 할당된 값이 없음을 나타내는 데 사용됩니다.
- null 값은 빈 문자열이나 빈 배열과 동일하지 않습니다. 빈 문자열은 문자가 포함되지 않은 문자열이고, 빈 배열은 요소가 포함되지 않은 배열입니다.
- Java 프로그래밍 언어에는 모든 참조 유형의 하위 유형인 "null"이라는 내장 null 유형이 있습니다.
그러나 인스턴스가 없고 인스턴스화할 수 없기 때문에 변수의 유형으로 사용할 수 없습니다.
- null은 대소문자를 구분합니다. null은 Java에서 리터럴이고 Java에서 키워드는 **대소문자를 구분** 하므로 C 언어에서처럼 NULL 또는 0을 쓸 수 없습니다.
- Java의 모든 참조 변수는 기본값이 null 입니다 .
- "null"은 메소드에서 인수로 전달될 수 있습니다.
- Java에서 null 값을 문자열 변수와 연결할 수 있습니다. Java에서는 연결로 간주됩니다.
여기서 null은 String 변수와만 연결됩니다. null과 String 이외의 다른 유형(Integer, Double 등)에 "+" 연산자를 사용하면 오류 메시지가 발생합니다.
## 2교시
예외처리 (예외 발생)
Object 클래스
#### try-with-resources
try에 자원 객체를 전달하면, try 코드 블록이 끝나면 자동으로 자원을 종료해주는 기능
AutoCloseable을 구현한 모든 객체를 사용할 수 있음
## 해시(Hash)
- 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑(mapping)한 값
- 특정한 데이터를 고정된 길이의 데이터로 변환하여 문장 내용이 완전히 같으면 완전히 같은 해시값을 가짐
- 충돌 회피성: 해시의 출력값이 충돌할 가능성은 희박. 여기서 충돌이란, 해시가 서로 다른 두 개의 입력값에 대해 동일한 출력값을 도출하는 상황
## maven
maven은 Java 기반 프로젝트를 빌드하고 관리하는 데 사용할 수 있는 라이브러리 자료실
POM 파일: POM(Project Object Model) 파일은 Maven이 프로젝트를 빌드하는 데 사용하는 종속성, 소스 디렉터리, 플러그인, 목표 등과 같은
프로젝트 관련 정보와 구성 정보를 포함하는 XML 파일
## Lombok
인텔리제이는 플러그인 설치
https://projectlombok.org/features/
## 자동 닫기 예외처리 코드
- autoclose trycatch 문
- 크롤링할때 많이 쓴다.