Notice
Recent Posts
Recent Comments
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
Today
Total
관리 메뉴

SYDev

[이것이 자바다] Chapter 12. java.base 모듈 본문

Programming Lang/Java

[이것이 자바다] Chapter 12. java.base 모듈

시데브 2025. 1. 31. 17:33

1. java.base 모듈

  • java.base: 모든 모듈이 의존하는 기본 모듈, 모듈 중 유일하게 requires하지 않아도 사용 가능
패키지 용도
java.lang 자바 언어의 기본 클래스를 제공
java.util 자료 구조와 관련된 컬렉션 클래스를 제공
java.text 날짜 및 숫자를 원하는 형태의 문자열로 만들어주는 포맷 클래스를 제공
java.time 날짜 및 시간을 조작하거나 연산하는 클래스를 제공
java.io 입출력 스트림 클래스를 제공
java.net 네트워크 통신과 관련된 클래스를 제공
java.nio 데이터 저장을 위한 Buffer 및 새로운 입출력 클래스 제공

 

  • java.lang: 자바 언어의 기본적인 클래스를 담고 있는 패키지, 이 패키지에 있는 클래스와 인터페이스는 import 없이 사요 가능

 

2. Object 클래스

  • 클래스를 선언할 때 extends 키워드로 다른 클래스를 상속하지 않으면 암시적으로 java.lang.Object 클래스를 상속
  • 자바의 모든 클래스는 Object의 자식이거나 자손 클래스

메소드 용도
boolean equals(Object obj) 객체의 번지를 비교하고 결과를 리턴
int hashCode() 객체의 해시코드를 리턴
String toString() 객체 문자 정보를 리턴

2.1. 레코드 선언

  • DTO(Data Transfer Object)를 작성할 때, 반복적으로 사용되는 코드를 줄이기 위해 Java 14부터 record 개념 도입
  • record로 선언된 소스를 컴파일 -> private final 필드가 자동 생성, 생성자 및 Getter 메소드 자동 추가, hashCode(), equals(), toString() 메소드를 재정의한 코드도 자동 추가
public record Person(String name, int age) {
}

 

2.2. 롬복 사용하기

  • 레코드와 마찬가지로 DTO 클래스를 작성할 때, Getter, Setter, hashCode(), equals(), toString() 메소드를 자동 생성
  • 레코드와의 차이점 -> 필드가 fianl이 아님, 값을 읽는 Getter는 getXxx(또는 isXxx)로, 값을 변경하는 Setter는 setXxx로 생성
  • @Data annotation: class 선언 위에 붙을 경우 Getter, Setter, hashCode(), equals(), toString() 메소드가 자동 생성
어노테이션 설명
@NoArgsConstructor 기본(매개변수가 없는) 생성자 포함
@AllArgsConstructor 모든 필드를 초기화시키는 생성자 포함
@RequiredArgsConstructor 기본적으로 매개변수가 없는 생성자 포함. 만약 final 또는 @NonNull이 붙은 필드가 있다면 이 필드만 초기화시키는 생성자 포함
@Getter Getter 메소드 포함
@Setter Setter 메소드 포함
@EqualsAndHashCode equals()와 hashCode() 메소드 포함
@ToString toString() 메소드 포함

 

3. System 클래스

  • 운영체제의 일부 기능을 이용 가능
  • 프로그램 종료, 키보드 입력, 콘솔(모니터) 출력, 현재 시간 읽기, 시스템 프로퍼티 읽기 

 

4. 문자열 클래스

 

5. 포장 클래스

 

6. 수학 클래스

 

7. 날짜와 시간 클래스

 

8. 형식 클래스 

 

9. 정규 표현식 클래스

 

10. 리플렉션

  • 자바는 클래스와 인터페이스의 메타 정보를 Class 객체로 관리
  • reflection: 메타정보(패키지 정보, 타입 정보, 멤버 정보 등)를 프로그램에서 읽고 수정하는 행위

 

11. 어노테이션

  • 어노테이션(Annotation): 코드에서 @로 작성되는 요소, 클래스 또는 인터페이스를 컴파일하거나 실행할 때 어떻게 처리해야 할 것인지를 알려주는 설정 정보
  • 어노테이션의 사용 용도
    • 컴파일 시 사용하는 정보 전달
    • 빌드 툴이 코드를 자동으로 생성할 때 사용하는 정보 전달
    • 실행 시 특정 기능을 처리할 때 사용하는 정보 전달

11.1 어노테이션 타입 정의와 적용

public @interface AnnotationName {
}
  • 어노테이션의 속성은 타입과 이름으로 구성, 이름 뒤에 괄호를 붙임
  • 속성의 기본값을 default 키워드로 지정
public @interface AnnotationName {
    String prop1();
    int prop2() default 1;
}
@AnnotationName(prop1= "값");
@AnnotationName(prop1= "값", prop2=3);
  • 기본 속성인 value를 가질 경우, 다음과 같이 값만 기술할 수 있음
  • 다른 속성의 값을 동시에 주려면, value 속성 이름을 반드시 언급해야 함
public @interface AnnotationName {
    String value();
    int prop2() default 1;
}
@Annotation("값");
@Annotation(value= "값", prop2=3);

 

11.2. 어노테이션 적용 대상

  • 어노테이션은 설정 정보 -> 어떤 대상에 설정 정보를 적용할 것인지 명시해야 함

  • 적용 대상을 지정할 때에는 @Target 어노테이션을 사용
@Target( { ElementType.TYPE, ElementType.FIELD, ElementType.METHOD } )
public @interface AnnotationName {
}

-> TYPE, FIELD, METHOD에만 적용가능한 어노테이션

 

11.3. 어노테이션 유지 정책

  • 유지 정책을 지정할 대는 @Retention 어노테이션을 사용
@Target( { ElementType.TYPE, ElementType.FIELD, ElementType.METHOD } )
@Retention( RetentionPolicy.RUNTIME )
public @interface AnnotationName {
}

 

11.4. 어노테이션 설정 정보 이용


참고자료