대/소문자 구분 없이 시작할 수 있다.하지만 대문자로 시작을 권장한다.클래스와 쉽게 구분하기 위해 모두 소문자로 작성한다.표준 패턴을 적용한다. \- com.Company.Project.TopPackage.LowerPackage가급적으로 한 단어로 구성한다. \-

프로그램 실행 중 예상하지 못한 상황이 발생하는 것을 의미 \- 대표적인 산술 예외: 10 / 0의도적으로 예외를 발생시킬 때는 throw 키워드를 통해 발생시킵니다.예외를 처리하지 않으면 프로그램이 중단되기 때문에try-catch 를 통해 안정적으로 프로그램의 실행
null 을 안전하게 다루게 해주는 객체NullPointerException 을 방지할 수 있음Optional<T> 은 null 이 올 수 있는 값을 감싸는 Wrapper 클래스camp.getStudnet() 는 null 을 반환할 가능성이 있는 메소드학생이 없는
Collections (Java Platform SE 8)자료구조를 쉽게 사용할 수 있도록 인터페이스와 클래스를 제공하는 집합컬렉션을 통해 데이터 저장, 조회, 삭제, 정렬 등 다양한 기능을 간편하게 구현할 수 있음배열과 다르게 컬렉션은 길이를 동적으로 변경할 수 있음

제네릭이란? 클래스, 메소드 등에 사용되는 (타입 매개변수) 를 의미 타입을 미리 지정하지 않고, 사용 시점에 유연하게 결정할 수 있는 문법 코드 재사용성 과 타입 안정성 을 보장받을 수 있음 코드 재사용성: 다양한 타입에서 동일한 코드로 재사용 가능

함수형 프로그래밍을 구성하기 위한 함수식 \- 간단히 말해 자바의 메소드를 간결한 함수식으로 표현한 것 \- 익명 클래스 를 더 간결하게 표현하는 문법함수형 인터페이스 를 통해서 구현하는 것을 권장하나의 추상 메소드만 가져야 하기 때문BUT 하나의 추상 메
Stream (Java Platform SE 8)데이터를 효율적으로 처리할 수 있는 흐름선언형 스타일로 가독성이 굉장히 뛰어남데이터 준비 -> 중간 연산 -> 최종 연산 순으로 처리됨스트림은 컬렉션(List, Set 등) 과 함께 자주 활용됨원본 데이터 소스를 변경하지
프로그램 내에서 독립적으로 실행되는 하나의 작업 단위싱글 쓰레드 는 한 번에하나의 작업만 처리하지만, 멀티 쓰레드 는 여러 작업을 동시에 처리할 수 있음 (병렬 처리)멀티 쓰레드 를 활용하면 여러 작업을 병렬로 수행할 수 있어처리 성능을 향상시킬 수 있음한 명의 일꾼이