본문 바로가기
전공살리기/CS

[CS 면접 기본 - 자바] 8. 자바의 버전은 무슨 차이가 있을까?

by 가든이당 2024. 10. 27.
반응형

 

  • Java 8: 함수형 프로그래밍, Stream API, 새로운 날짜/시간 API, Optional 클래스 도입.
  • Java 11: 장기 지원 버전으로 HTTP Client API, String 메서드 개선, 오래된 기능 제거.

 

 LTS  버전 2014, 2018녀에 출시, 

 

1) 람다 표현식을 사용함.

int plus(int a) { return a = a+3; }  = (a) -> {a+3}

2)  STREAM : 병열처리 지원 

for문, while 문 대신STREAM() , filter를 사용하여서 반복문을 처리해서 

속도가 더 빨라지게 됩니다. (병열처리라 조금 더 빠르게 처리가 된다.) 

 

3) 인터페이스 : 

 

3) 인터페이스 기능 의 개선 - default  매소드 정의가 가능해짐. 원래는 추상 매소드만 구현 가능했음 

자바 8이전에는 인터페이스의 경우에는 interface 지시자로 정의하며 모든 메소드가 추상메소드로 정의(보장을 위한 것)하겠지만, java 8 이후에는 정적인 메소드, 디폴트 매소를 정의할 수 있게 되었다.

그러면 추상클래스랑 차이가 없지 않아? 아니야, 여전히 추상 클래스는 코드 재사용을 통한 확장의 목적이고 다중 상속을 지원하지않고, 인터페이스는 다중상속을 지원해, 인터페이스는 클래스들의 동일한 행동 규약의 개념이라 일반적으로는 접근제어자가 public이지만, 추상클래스는 privivate, 등 접근제어자를 다 쓸 수 있어, 

추상클래스는 또 상태관리가 가능해서 상속받은 하위클래스들이  super()등을 사용해서 공통된 상태를 활용하여 동작을 정의하거나 확장할 수 있고, 

인터페이스는 모든 메소드가 실제 데이터로 다뤄져야하기 때문에 상태관리가 불가능하다고 할 수 있습니다.  

 

 

 

 

스트림 API의 주요 연산

  1. 중간 연산(Intermediate Operations):
    • filter(): 조건에 맞는 요소를 필터링합니다.
    • map(): 각 요소에 대해 변환 작업을 수행합니다.
    • sorted(): 요소를 정렬합니다.
    • distinct(): 중복 요소를 제거합니다.
  2. 최종 연산(Terminal Operations):
    • collect(): 스트림의 결과를 컬렉션으로 수집합니다.
    • forEach(): 각 요소에 대해 특정 작업을 수행합니다.
    • reduce(): 스트림의 요소를 축약하여 단일 값으로 만듭니다.
    • count(): 요소의 개수를 세어 반환합니다.

요약

스트림 API는 자바 8에서 도입된 데이터 처리 기능으로, 함수형 프로그래밍 스타일을 지원합니다. 스트림을 사용하면 데이터를 필터링, 매핑, 정렬 및 집계하는 등의 작업을 효율적으로 수행할 수 있으며, 지연 평가와 병렬 처리 기능을 통해 성능을 최적화할 수 있습니다.

 

 

반응형