읽은 책 정리/자바의정석 3판 12

[Java] Chapter14 람다와 스트림

1. 람다식 자바가 등장한이후로 큰변화가 두번있었는데, 첫번째는 JDK 1.5부터 추가된 지네릭스와, 두번째는 JDK 1.8부터 추가된 람다식의 등장이다 자바는 람다식의 도입으로 객체지향적언어 + 함수형 언어가 되었다. 1.1 람다식이란? 간단히 말해서 메서들르 하나의 식'(expression)'으로 표현한것이다. 함수를 간략하면서, 명확한 식으로 표현할수 있게 해준다. 메서드를 람다식으로 표현하면, 메서드의 이름과 반환값이 없어지므로 람다식을 '익명함수'라고도 한다 *메서드와 함수의 차이 -둘다 개념은 동일하나, 메서드는 특정 클래스에 반드시 속해야한다는 제약이 있고 함수는 아님 1.2 람다식 작성하기 '익명함수'답게 메서드에서 이름과,반환타입을 제거하고 매개변수선언부와 몸통{ } 사이에 ' -> '를..

[Java] Chapter12 지네릭스,열거형,애너테이션

1. 지네릭스란? - 지네릭스는 다양한 타입의 객체들을 다루는 메서드나, 컬렉션 클래스에 컴파일시의 타입체크를 해주는기능 (컴파일시 체크하기에, 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다) 꺼낼때 마다, 타입체크를 하고 형변환을 하는것을 불편할수밖에없다. 게다가 원하지 않는 종류의 객체가 포함되는것을 막을방법이 없다. 이러한걸 제네릭스가 해결해줌. 1.2 지네릭클래스의 선언 - 지네릭 타입은 클래스와 메서드에 선언가능. (아래와 같이 클래스 옆에 을 붙이면됨. //는 타입변수라 하며, T가 아닌 다른것도 사용 가능. 타입변수가 여러개인경우 Map와 같이 콤마 ' , ' 로 구분자로 나열하면된다. 1 2 3 class Box{ T item; } cs 지네릭스의 용어 1 2 3 4 class ..

[Java] Chapter11 컬렉션 프레임워크

1. 컬렉션 프레임워크 - 데이터(다수의 데이터를 저장하는) 표준화된 프로그래밍 방식 다수의 데이터를 다루는데 필요한 다양하고, 풍부한 클래스를 제공 또한 인터페이스와, 다형성을 이용한 객체 지향적 설계를 통해 표준화 되어있다. 1.1 컬렉션 프레임웍의 핵심인터페이스 - 각 데이터 그룹을 크게 3가지 타입이 존재한다고 인식하고, 3개의 인터페이스를 정의함. 그리고, 인터페이스 List와 Set의 공통된 부분을 뽑아 새로운 인터페이스 Collection 추가 정의. (Map은 List와 Set과 다른형태로 데이터를 다루기에 Collection 에 포함 X) List - 순서 O , 중복 O Set - 순서 X , 중복 X Map - 키와 값의 쌍으로 이루어진 데이터 . 순서 X , 키중복 X 값 중복 O ..

[Java] Chapter10 날짜와 시간 & 형식화

1. 날짜와 시간 1.1 Calendar와 Date 1) Date 클래스( Date는 대부분 메서드가 'depreated'가 되어 있으므로 잘 사용 안한다.) 2) Calendar 클래스 3) java.time 패키지 순으로 기존 단점을 개선한 기술이 나옴. - Calendar 는 추상 클래스이기때문에, 직접객체 생성 X (get 메서드로 구현된 클래스 인스턴스 가져오기) > Calendar cal = Calender.getInstanc(); - Calender 클래스 사용 ( 시간설정은 set 으로도 가능, 시간 추가는 add메서드 사용) 두개의 날짜가 있을때, 시간차이를 비교하려면 서로 모두 초로 변경하고 초끼리 뺴고 , 나누기 1000을 해준다. 1 2 3 4 Calendar today = Cale..

[Java] Chapter09 Java.Iang 패키지와 유용한클래스

Java.Iang 패키지 - 가장 기본이 되는 클래스들을 포함하고 있다. Object 클래스 - 멤버 변수는 없고, 오직 11개의 메서드만 가지고 있다. 아래의 메서드는 자주사용하는것만 작성했다 Object클래스의 메서드 protected Object clone() 객체 자신의 복사본을 반환한다 public boolean equals(Object obj) 객체 자신과 객체 obj가 같은 객체인지 알려준다.(같으면 true) public Class getClass() 객체 자신의 클래스 정보를 담고 있는 Class 인스턴스를 반환한다 public int hashCode() 객체 자신의 해시코드를 반환한다(주소값) public String toString() 객체 자신의 정보를 문자열로 반환한다 protec..

[Java] Chapter08 예외처리

프로그래밍오류 - 에러(error) -> 코드에의해 수습될수없는 심각한 오류 - 예외(excetion) -> 코드에 의해 수습될수 있는 미약한오류 예외 클래스의 계층구조 - 모든 예외의 최고조상은 Exception 클래스이며, 크게 두그룹으로 나누어짐1) Excetion 클래스와 그 자손들 (주로 사용자의 실수//외부영향에 의해 발생)2) RuntimeExcetion 클래스와 그 자손들 (주로 프로그래머 실수) 예외처리하기 try-catch문 - 프로그래밍이 갑작스러운 비정상 종료를 막고, 정상적인 실행 상태를 유지할수 있도록 하는것. try{에 선언된 코드중 예외가 발생한 시점에 바로 catch문으로 가기때문에 예외발생 시점의 try 아래의 코드는 실행 X 예외 발생시키기 - 키워드 throw를 사용해..

[Java] Chapter07 객체지향 프로그래밍

상속 - 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는것 (새로 작성하고자 하는 클래스의 이름뒤에 상속받고자 하는 클래스의 이름을을 키워드 'extends'와 함께 써주면됨) - 조상 클래스가 변경되면, 자손클래스는 영향받지만, 자손클래스가 변경되어도 조상클래스는 영향 X (생성자와 초기화 블럭은 상속 X) 자손클래스의 멤버 개수는 조상보다 같거나 많다 자손클래스의 인스턴스를 생성하면, 조상클래스의 멤버와 자손클래스 멤버가 합쳐진 인스턴스로 생성됨 클래스간의 관계 - 포함관계 - 하나의 거대한 클래스를 작성하는것보단, 단위별로 여러개의 클래스를 작성한다음 이 단위로 클래스들을 포함관계로 재사용 하는 방법이 간결하고 손쉽게 클래스 작성가능. 1 2 3 4 5 6 7 8 9 10 11 12 ..

[Java] Chapter06 객체지향언어

객체지향 언어의 역사 - 재사용성과 유지보수 그리고 중복된 코드의 제거에 중점적으로 고안되서 나온언어 클래스와 객체의 정의와 용도 - 클래스는 객체를 생성하는데 사용되며, 객체는 클래스에 정의된대로 생성됨 객체와 인스턴스 - 클래스로 부터 객체를 만드는과정을 클래스의 인스턴스화 라고하며, 어떤 클래스로부터 만들어진 객체를 그클래스의 인스턴스라고 한다 객체의 구성요소 - 객체는 속성과 기능의 집합이라 할수 있다(멤버변수와 메서드) 인스턴스의 생성과 사용 - 참조변수에는 하나의 값 (주소)만이 저장될수 있으므로, 둘이상의 참조변수가 하나의 인스턴스를 가리키는것(참조하는)것은 가능하지만 하나의 참조변수로 여러개의 인스턴스를 가리키는것은 가능하지 않다. 객체 배열 - 객체 역시 배열로 다루는것이 가능, TV [..

[Java] Chapter05 배열

배열이란? -같은 타입의 여러변수를 하나의 묶음으로 다루느느것(같은타입) -원하는 타입의 변수를 선언하고, 변수또는 타입에 배열임을 의미하는 대괄호 [ ] ex) int [] sort 선언 -배열을 선언하는건, 단지 생성된 배열을 다루기 위한 참조 변수 공간이 만들어질뿐(배열을 생성해야함.) ex) 타입[ ] 변수이름 = new 타입[ ] 길이; int[] test = new int[5]; // 5개의 배열공간. 배열의 길이와 인덱스 인덱스 범위는 0 부터 '배열길이 -1 까지 존재 인덱스의 유효한 범위를 벗어난값은 컴파일러가 자동으로 걸러주지 못함(예외 발생) 배열의 초기화 - 배열의 생성과 초기화를 동시에 할수 있다. ex) int[] test = {1,2,3,4,5}; 배열의 복사 - 배열의 길이가..

[Java] Chapter04 조건문과 반복문

1. 조건문 -if , switch 조건식과 문장을 포함하는 블럭{} 으로 구성되 있으며, 실행흐름을 변경할수 있다. 처리할 경우의 수가 많을때는 if문보다 switch문이 효율적이지만 , switch문은 제약이 많다 1.2 if-else 문 if (조건식) { //조건식이 참(true)일때 수행될 문장 } else { //조건식이 거짓(false)일때 수행될 문장 } 1.3 if - else if문 (처리해야할 경우의 수가 셋 이상인경우) if (조건식) { //조건식1의 연산결과가 참일때 수행 } else if (조건식 2) { // 조건식 2의 연산결과가 참일때 수행 } else { //위의 어느조건식도 만족하지 않을때 수행 } 1.4 중첩 if문 if문의 블럭내에 또 다른 if문을 포함시키는것이 ..