관리 메뉴

KorSA

JAVA 주요 패키지 및 고려 사항 본문

Knowledge Lecture/JAVA

JAVA 주요 패키지 및 고려 사항

Praiv. 2021. 12. 21. 15:46
320x100

1. java.lang 패키지

  • java.lang 패키지는 JAVA의 가장 기본적인 클래스들이 모여있는 패키지이고 다른 패키지들과 달리 import 구문 없이도 사용 가능하다. 우리가 자주 접하는 Object, String, StringBuffer, Boolean, Character, Number 클래스들 모두 java.lang 패키지에 포함되어 있다.

 

 

2. Java.util 패키지

  • java.util 패키지는 유틸리티 성격의 클래스들을 모아놓은 패키지이다. Date, Calendar등 날짜 관련 클래스들을 포함하고 있고 다양한 자료구조를 모아놓은 Collection Framework를 포함하고 있다.
  • Date 클래스는 거의 deprecated 되었지만 여전히 사용 중이고 Date클래스의 단점을 보완하여 나온 Calendar 클래스가 있다.
  • Collections Framework는 List, Map, Set 등 주요 자료구조들을 포함하고 있는 중요 프레임워크이다. Java Collection에 대한 내용은 https://korsa.tistory.com/500?category=992467 에서 확인할 수 있다.

 

 

3. java.time 패키지

  • java.time 패키지는 java.util.Date 클래스와 java.util.Calendar 클래스의 단점을 보완하기 위해 나온 패키지이다. java.time 패키지에서는 기존과 달리 날짜와 시간을 구분지어 LocalDate, LocalTime 각각의 클래스로 다룬다.

 

 

4. Object 클래스

  • Object 클래스의 finalize() 함수는 자주 사용하지 않는다. finalize() 함수는 “반드시” 실행된다는 보장이 없고 객체 제거 전에 호출되어 마무리 작업을 수행할 때 속도가 느려지기 때문이다.

 

 

5. 동기화 / 비동기화 클래스

  • 멀티쓰레드 프로그램이 아닌 경우 동기화는 불필요한 성능 저하가 있다. 따라서 꼭 필요한 경우가 아니면 동기화가 적용된 클래스보다 비동기화 클래스를 사용하는 게 효율적이다.
  • StringBuffer는 동기화가 구현된 클래스이고, StringBuilder는 비동기화 클래스이다. 쓰레드가 필요할 때나 긴가민가 할 때에는 StringBuffer를 쓰고, 쓰레드가 필요없는 경우 StringBuilder를 쓴다.
  • 클래스간 동기화 / 비동기화 차이는 Collection Framework에도 존재하는데 관련된 내용은 https://korsa.tistory.com/500?category=992467 에서 확인 가능하다.

 

 

6. 람다식

  • 함수를 간단한 ‘식(Expression)’으로 표현해 코딩을 좀 더 간결하게 작성할 수 있다.

 

 

7. java.util.function 패키지

  • java는 java.util.function 패키지를 통해 자주 사용하는 함수형 인터페이스를 제공한다.  아래는 function 패키지안에 선언된 함수형 인터페이스들이다. 람다식 함수형 인터페이스에 관한 더 자세한 내용은 https://korsa.tistory.com/394?category=988854 에서 확인할 수 있다.

 

 Runnable : 매개변수도 없고, 반환값도 없음

void run();


    Supplier<T> : 매개변수는 없고, 반환값은 있음

T get();


    Consumer<T> : Supplier와 반대로 매개변수만 있고, 반환값이 없음

void accpet(T t);


    Function<T, R> : 일반적인 함수, 하나의 매개변수를 받아서 결과를 반환

R apply(T t);


    Predicate<T> : 매개변수는 하나이고 조건식을 표현하는데 사용됨

boolean test(T t);


    BiConsumer<T, U> : 두 개의 매개변수만 있고 반환값이 없음

void accept(T t, U u);


    BiPredicate<T, U> : 조건식을 표현하는 데 사용됨. 매개변수는 둘, 반환값은 boolean

boolean test(T t, U u);


    BiFunction<T, U, R> : 두 개의 매개변수를 받아서 한개의 결과를 반환

R apply(T t, U u);


    UnaryOperator<T> : Function의 자손. Function과 달리 매개변수와 결과의 타입이 같다

T apply(T t);


    BinaryOpeartor<T> : BiFunction의 자손. BiFunction과 달리 매개변수와 결과의 타입이 같다

T apply(T t, T t);

 

 

8. Stream

  • Java의 Collection Framework가 나와서 자료구조를 다루기 한결 편해졌지만 여전히 자료구조간 사용방법이 달라서 불편한 감이 있었다. JDK 1.8에서는 이러한 불편을 해결하고자 다양한 데이터 소스를 표준화된 방법으로 다루는 Stream 기술을 공개하였다. Stream 관련 정보는 https://korsa.tistory.com/396?category=988854에서 확인할 수 있다.

 

 

 

 

728x90
728x90

'Knowledge Lecture > JAVA' 카테고리의 다른 글

JAVA Collection의 thread-safe 비교  (0) 2021.12.16
Comments