본문 바로가기

JAVA9

Stream(스트림) 1. 스트림 API 1.1 스트림 API 개념 스트림 사용 이전(과거) - 많은 양의 데이터를 저장하기 위한 배열, 컬렉션 등의 데이터 접근 위해서는 반복문이나 반복자를 사용 → 코드 길이 긺, 가독성 떨어짐, 코드 재사용X - [ 해결법 ] : 스트림(stream) 정의 - 데이터를 추상화하며 다룸 - 다양한 방식으로 저장된 데이터를 읽고 쓰기 위한 공통된 방법 제공 ≫ 파일에 저장된 다양한 형태의 데이터들을 모두 같은 방법으로 다룰 수 있음 특징 스트림 컬렉션 내부 반복을 통해 작업 외부 반복을 통해 작업 단 한번만 사용 재사용 가능 원본 데이터를 변경하지 않음 필터-맵(filter-map) 기반의 API 사용하여 지연(lazy) 연산을 통해 성능 최적화 parallelStream() 메소드를 통한 .. 2021. 8. 9.
Optional 클래스 1. java.util.Option 클래스 정의 - T 타입의 객체를 포장해주는 래퍼 클래스(Wrapper class) ⇒ Optional 인스턴스는 모든 타입의 참조변수 저장 가능 - NullPointerException 예외 처리 가능 2. Optional 객체의 생성 of() 메소드 - null이 아닌 명시된 값을 가지는 Optional 객체 반환 - Option 객체에 null값 저장 → NullPointerException 예외 발생 ofNullable() 메소드 - 명시된 값이 null이 아니면 명시된 값을 가지는 Optional 객체 반환 - 명시된 값 null → 비어있는 Optional 객체 반환 Optional opt = Optional.ofNullable("자바 Optional 객체".. 2021. 8. 4.
CH07. 제네릭, 열거형, 컬렉션 [ CH07. 제네릭, 열거형, 컬렉션 ] 1. 제네릭 1.1 제네릭 개념 모든 종류의 타입으로 변신할 수 있도록 클래스나 메소드를 일반화시키는 기법 컴파일시 타입 체크 타입 매개 변수 : 요소 타입을 일반화한 타입 ex) , , 1.2 제네릭 용어 Box : 제네릭 클래스 T : 타입 변수, 타입 매개변수 Box : 원시 타입 1.3 제네릭 클래스 선언 클래스나 인터페이스 선언부에 일반화된 타입 추가 제네릭 클래스 레퍼런스 변수 선언 1.4 제네릭 클래스의 객체 생성과 사용 Box의 객체 생성 → 참조변수와 생성자에 대입된 타입 일치 Box appleBox = new Box();// OK Box appleBox = new Box();// ERROR: 대입된 타입이 다름 Box appleBox = new.. 2021. 8. 4.
CH06. java.lang 패키지와 유용한 클래스 [ CH06-1. java.lang 패키지 ] 0. 주요 패키지 java.lang : 스트링, 수학 함수, 입출력 등 자바 프로그래밍에 필요한 기본적인 클래스와 인터페이스 java.util : 날짜, 시간, 벡터, 해시맵 등과 같은 다양한 유틸리티 클래스와 인터페이스 java.io : 키보드, 모니터, 프린터, 디스크 등에 입출력을 할 수 있는 클래스와 인터페이스 java.awt : 자바 GUI 프로그래밍을 위한 클래스와 인터페이스 javax.swing : 자바 GUI 프로그래밍을 위한 스윙 패키지 1. Object 클래스 1.1 Object클래스의 메서드 모든 클래스의 최고 조상이며, 오직 11개의 메서드를 가짐 notify(), wait()등은 쓰레드 관련 메서드 equals(), hashCode().. 2021. 5. 10.
[Tip] static 메서드의 오버라이딩 불가 [ 결론 : static 메서드의 오버라이딩은 불가!!] 1. 컴파일 타임(Compile Time) vs 런타임(Run Time) 컴파일 타임 - 개발자가 작성한 소스 코드를 컴파일하여 기계어코드로 변환하는 과정 - 컴파일이 진행되는 과정 런타임 - 컴파일 과정을 마친 프로그램이 사용자에 의해 실행되는 과정 2. 정적 바인딩(Static binding) vs 동적 바인딩(Dynamic binding) 정적 바인딩 - 컴파일 타임에 성격이 결정 - 컴파일러가 어떤 메소드를 실행할지 컴파일 타임에 결정 동적 바인딩 - 런타임에 성격 결정 3. static 메소드 오버라이딩 불가 => static hiding static hiding - 부모 클래스와 자식 클래스의 동일한 이름의 정적 메서드는 재정의가 아닌 .. 2021. 5. 7.
CH05. 상속, 오버라이딩, package, 제어자, 다형성, 추상클래스, 인터페이스 [ CH05. 상속, 오버라이딩, package, 제어자, 다형성, 추상클래스, 인터페이스 ] 1. 상속 1.1 상속 정의 - 부모 클래스(슈퍼 클래스)에 만들어진 필드, 메소드를 자식 클래스(서브 클래스)가 물려받음 (생성자, 초기화블럭 제외) - 상속을 통해 간결한 자식 클래스 작성 가능 - 공통부분은 부모클래스에서 관리, 개별 부분은 자식 클래스에서 관리 장점 - 클래스의 간결화 -> 멤버의 중복 작성 X - 클래스 관리 용이 -> 클래스들의 계층적 분류 - 소프트웨어 생산성 향상 -> 클래스 재사용과 확장, 새로운 클래스 작성 속도 빠름 선언 - extends 키워드 사용 public class Person { } public class Student extends Person { // Perso.. 2021. 5. 3.