1. Map 컬렉션 - 특징 : - 1 ) 키(Key)와 값(Value)으로 구성된 Map.Entry 객체를 저장하는 구조이다. - 2 ) 키와 값은 모두 객체이며, 키는 중복될 수 없지만 값은 중복이 가능하다. - 키로 접근해서 값을 추출하기에 순서의 개념이 존재하지 않는다. - Set과 비슷하게 hashCode와 equals로 중복을 판단하게 된다. - 구현 클래스 : HashMap, Hashtable, LinkedHashMap, Properties, TreeMap 2. HashMap ( P.742 ) - Map map = new HashMap ( ) ; - K는 key 값 타입, V는 value 값 타입을 의미한다. - Set과 비슷하게 hashCode와 equals로 중복을 판단하게 된다. ..
1. Operator 함수적 인터페이스 ( p. 697 ) - 매개 값과 리턴 값이 모두 있는 추상 메소드를 가진다. - 주로 매개 값을 연산하고, 그 결과를 리턴하는 경우에 사용한다. ( y = f(x) ) - 매개 변수의 타입과 수에 따라서 분류한다. - 종류 예시 : - BinaryOperator : 2(T, U)개를 연산한 후에, R로 리턴해라. - UnaryOperator : 1개(T)를 연산한 후에, R로 리턴해라. - 이 경우 매개변수 T만이 적혀 있는데, 그 이유는 이 2개의 인터페이스는 BiFunction과 Function의 하위 인터페이스이기 때문이다. 2. Predicate 함수적 인터페이스 ( p. 699 ) - 매개 값을 조사해서 true 또는 false를 리턴할 때 사용한다. -..
1. 람다식 ( Lamda Expression ) - 자바8부터 함수적 프로그래밍을 위해 람다식 지원하기 시작했다. - 익명 함수(Anonymous function)를 생성하기 위한 식이다. - 람다식을 통해서 코드가 매우 간결해지고, 컬렉션 요소(대용량 데이터)를 필터링 또는 매핑하기 쉽게 집계해준다. - 자바는 람다식을 함수적 인터페이스의 익명 구현 객체로 취급한다. - 람다식이 구현대상이 되는 함수적 인터페이스를 해당 람다식의 Target Type이라 부른다. - 모든 인터페이스가 람다식의 구현 대상이 될 수는 없다. - 람다식의 조건 : 구격(추상메소드)이 오로지 단 1 개만 있는 인터페이스 - 람다식의 조건에서는 추상메소드의 개수만 확인하기 때문에 상수나 디폴트 메소드의 개수는 2개 이상이어도 ..
1. 제네릭 타입이란? - 타입을 파라미터(매개변수)로 가지는 클래스와 인터페이스다. - 선언 시 클래스 또는 인터페이스 이름 뒤에 “ “로 적는다. - 제네릭 타입을 사용하지 않는 경우 : - Object 타입 사용 - > 빈번한 타입(강제형)변환 발생 - > 프로그램 성능 저하 - 제네릭 타입을 사용하는 경우 : - 1 ) 클래스 선언할 때 타입 파라미터 사용하면, - 2 ) 컴파일 시 타입 파라미터가 구체적인 클래스로 변경된다! 2. 제네릭 타입을 사용할 때 주의점 - 제네릭 타입을 “선언할 때”에는 타입 파라미터를 선언하는 것이다. - 그렇기에 파라미터의 이름도 단문 대문자 알파벳 1글자로 선언하는 것이다. - 제네릭 타입을 “사용할 때”에는 타입파라미터에 “참조타입의 이름”..
1. 예외처리코드 ( 다중 catch ) - 예외별로 예외 처리 코드를 다르게 구현한다. - Ex. try { } catch ( ArratIndexOutOfBoundsException e ) { 예외처리 1 } catch ( NumberFormatException e ) { 예외처리 2 } - Catch의 순서는 예외 클래스에서 부모 타입을 아래로 자식 클래스를 위에 작성해야 한다. - Why? 왜냐하면 상위 클래스를 위에 작성하면 밑에 하위 클래스를 작성하지 않아도 예외를 위에서 다 잡아버리기에 특정 예외별로 다른 코드를 작성하려면 자식타입을 먼저 작성해야 한다. 2. 예외처리코드 ( 멀티 catch ) - 자바 7부터는 하나의 catch 블록 내에서 여러 개의 예외처리가 가능하다. - 동일하게 예외처..
1. 인터페이스 - 디폴트 메소드 - 인터페이스만으로는 사용이 불가능하다. - Why? 디폴트 메소드는 인스턴스 메소드로, 구현 객체가 인터페이스에 대입되어야 호출할 수 있기 때문이다. - 모든 구현 객체가 가지고 있는 기본 메소드로 사용되지만, 필요에 따라서 재정의가 가능하다. - 인터페이스의 모든 멤버는 public이다. 2. 다형성 - 하나의 타입에 여러 가지 객체를 대입해 다양한 실행 결과를 얻는 것이다. - 자동 타입 변환 ( Promotion ) : 인터페이스( 부모 ) 변수 = 구현( 자식 )객체 ; - Ex. A a1 = new b ; ( 부모인 A타입의 a라는 변수에 자식객체인 b를 넣은 것이다. ) - 자동형변환은 데이터 유실의 위험성이 없다. - 필드의 다형성 : 다형성은 객체를 부품..
1. 요약 - instanceof : 타입변환을 해야 될 때, 먼저 자식 타입인지 확인 후에 강제형변환을 시킬 때 사용한다. - “ 객체 instanceof 타입 “ 형태로 사용되는데, parent instanceof child라고 하면 parent라는 매개변수가 참조하는 객체가 child인지 조사하는 것이다. - Instanceof를 사용하기 위해서는 부모 / 자식 관계기 형성되어 있어야 한다. 2. 추상 클래스 ( Abstract Class ) - 추상 : 실체들 간에 공통되는 특성을 추출한 것이다. - EX. 새, 강아지, 고양이, 햄스터 - > 동물 ( 추상 ) - 추상클래스 : - 실체 클래스들의 공통되는 필드와 메소드를 정의한 클래스 - 추상 클래스는 실체 클래스의 부모 클래스 역할을 한다. ..
1. Final 클래스와 final 메소드 - 상속할 수 없는 final 클래스 : 자식 클래스를 만들지 못하도록 final 클래스로 생성한다. - 오버 라이딩 불가능한 final 메소드 : 자식클래스가 재정의 할 수 없도록 부모 클래스의 메소드를 final로 생성한다. - Final 키워드의 용도 : - 1 ) final 필드 : 수정이 불가능한 필드 - 2 ) final 클래스 : 부모로 사용이 불가능한 클래스 - 3 ) final 메소드 : 자식이 재정의할 수 없는 메소드 2. Protected 접근제한자 - Protected 접근제한자 = default 접근제한자 + alpha - 같은 패키지 내에서는 default 접근제한자와 같이 허용되지만 - 다른 패키지에서는 default와 다르게 자식 클..
1. 상속( Inheritance )의 개념 - 자식 클래스가 부모 클래스의 멤버를 물려받는 것 - 자식이 부모 클래스를 선택해서 물려받는다. - 상속 대상 : 부모 클래스의 필드와 메소드 ( 생성자는 물려받지 않는다. ) - 자식 클래스 : 부모 클래스의 필드와 메소드 + 자식 클래스에서 추가한 필드와 메소드 - 상속을 통해서 객체의 다향성을 구현할 수 있다. - 상속 대상 제한 : - 1 ) 부모 클래스의 private 접근제한자를 갖는 필드와 메소드는 제외된다. - 2 ) 부모 클래스가 다른 패키지에 있을 경우, default 접근제한자를 갖는 필드와 메소드도 제외된다. - + 자식 클래스일지라도 외부 클래스로 간주되기 때문에 private로 제한된다. 2. 클래스 상속 ( extends ) - E..
1. 요약 - 참조 타입의 종류 : 배열타입, 열거타입, 클래스. 인터페이스, 레코드 - Staic은 지역변수나 매개변수에 사용할 수 없다. - 매개변수는 지역변수로 간주하기에 지역변수와 같은 유효 범위를 갖는다. - 패키지란 비슷한 기능을 가진 클래스끼리 묶은 것을 의미한다. - 만약 다른 패키지에 있는 것을 사용하고 싶을 때는 import문을 사용해야 한다. - import문은 컨트롤 + 쉬프트 + O를 사용하면 자동으로 입력되지만, 만약 같은 이름의 클래스를 모두 사용할 때에는 직접 패키지명.클래스명으로 직접적으로 입력해야 한다. - Default 접근제한자는 접근제한자 중 아무것도 작성하지 않았을 때 자동으로 사용되는 접근제한자로, 같은 패키지에만 접근이 가능하다. (public과 같이 class..