자바

자바 - java.base 모듈

록's 2023. 1. 18. 17:49
728x90
반응형

API 도큐먼트

 

API 도큐먼트

 

 

 

 

 

 

 

 

 

 

java.base 모듈

 

java.base

  • 모든 모듈이 의존하는 기본 모듈로, 모듈 중 유일하게 requires 하지 않아도 사용할 수 있음

 

java.lang

  • 자바 언어의 기본적인 클래스를 담고 있는 패키지. 이패키지에 있는 클래스와 인터페이스는 import 없이 사용 할 수 있

 

 

 

 

 

 

 

Object 클래스

 

 

Object 클래스

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

 

 

 

 

객체 동등 비교

  • Object의 equals() 메소드는 객체의 번지를 비교하고 boolean 값을 리턴
public boolean equals(Object obj)

 

객체 해시코드

  • 객체를 식별하는 정수. Object 의 hashCode() 메소드는 객체의 메모리 번지를 이용해서 해시코드를 생성하기 때문에 객체마다 다른 정수 값을 리턴
public int hashCode()
  • hashCode()가 리턴하는 정수 값이 같은지 확인하고, equals() 메소드가 true를 리턴하는지 확인해서 동등 객체임을 판단

 

객체 문자 정보

  • 객체를 문자열로 표현한 값. Object의 toString() 메소드는 객체의 문자 정보를 리턴
  • 기본적으로 Object의 toString() 메소드는 '클래스명@16진수해시코드'로 구성된 문자열을 리턴

 

레코드 선언

  • 데이터 전달을 위한 DTO작성 시 반복적으로 사용되는 코드를 줄이기 위해 도입
public record Person(String name, int age) {
}

 

 

롬복 사용하기

  • DTO 클래스를 작성할 때 Getter, Setter, hasCode(), equals (), toString() 메소드를 자동 생성
  • 필드가 final이 아니며, 값을 읽는 Getter는 getXxx(또는 isXxx)로, 값을 변경하는 Setter는 setXxx로 생성됨
java -jar lombok.jar

 

어노테이션(클래스 위 작성)

@Data   // 어노테이션 : 기본 생성자와 함께 Getter, Setter, hashCode(), equals(), toString() 자동 생성@NoArgsConstructor // 기본(매개변수가 없는) 생성자 포함
@AllArgsConstructor // 모든 필드를 초기화 시키는 생성자 포함
@RequiredArgsConstructor // 기본적으로 매개변수가 없는 생성자 포함. 만약 final 또는 @NotNull이 붙은 필드가 있다면 이필드만 초기화 시키는 생성자 포함
@Getter // Getter 메소드 포함
@Setter // Setter 메소드 포함
@EqualsAndHashCode // equals()와 hashCode() 메소드 포함
@ToString // toString() 메소드 포함

 

 

 

 

 

 

 

System 클래스

 

System 클래스

  • System 클래스의 정적 static 필드와 메소드를 이용하면 프로그램 종료, 키보드 입력, 콘솔(모니터) 출력, 현재 시간 읽기, 시스템 프로퍼티 읽기 등이 가능

 

 

*

프로세스 종료
자바 프로그램 -> JVM으로 프로세스가 생성 -> main() 메소드 호출 -> 프로그램 구동

GUI 프로그램 : 종료버튼
강제 프로세스 종료 : System.exit() 메소드
  Sysetm.exit(매개값) : 0, 1 or -1
   0 : 정상 종료
   1 or -1 : 비정상 종료 


진행 시간 읽기
currentTimeMillis() 메소스 nanoTime() 메소드 : 1970년 1월 1일 0시

 

시스템 프로퍼티 읽기
java.specifiactiomn.version : 자바 스펙 버전
java.home : JDK 디렉토리 경로
os.name : 운영체제
user.name : 사용자 이름
user.home : 사용자 홈 디렉토리 경로
user.dir : 현재 디렉토리 경로

*

 

문자열 클래스

 

*

문자열 클래스
String  : 문자열을 저장하고 조작할때 사용
StringBuilder  : 효율적인 문자열 조작 기능이 필요할 때 사용
StringTokenizer  : 구분자로 연결된 문자열을 분리할 때 사용

*

 

 

 

String 클래스

  • String 클래스는 문자열을 저장하고 조작할 때 사용
  • 문자열 리터럴은 자동으로 String 객체로 생성. String 클래스의 다양한 생성자를 이용해서 직접 객체를 생성할 수도 있음

  • 한글 1자를 UTF-8로 인코딩하면 3바이트가 되고, EUC-KR로 인코딩하면 2바이트가 됨

 

 

StringBuilder 클래스

  • 잦은 문자열 변경 작업을 해야 한다면 String 보다는 StringBuilder가 좋음
  • StringBuilder는 내부 버퍼에 문자열을 저장해두고 그 안에서 추가, 수정, 삭제 작업을 하도록 설계

 

 

StringTokenizer 클래스

  • 문자열에 여러 종류가 아닌 한 종류의 구분자만 있다면 StringTokenizer를 사용 할 수도 있음. StringTokenizer 객체를 생성 시 첫 번째 매개값으로 전체 문자열을 주고, 두 번째 매개값으로 구분자를 줌. 구분자를 생략하면 공백이 기본 구분자가 됨

 

 

 

포장 클래스

 

포장 객체

  • 기본타입(byte, char, short, int, long, float, double, boolean)의 값을 갖는 객체
  • 포장하고 있는 기본 타입의 값을 변경할 수 없고, 단지 객체로 생성하는 목적

 

 

박싱과 언박싱

  • 박싱 : 기본 타입 값을 포장 객체로 만드는 과정. 포장 클래스 변수에 기본 타입 값이 대입 시 발생
  • 언박싱 : 포장 객체에서 기본 타입 값을 얻어내는 과정. 기본 타입 변수에 포장 객체가 대입 시 발생
Integer obj = 100;		// 박싱
int value = obj;		// 언박싱
int value = obj + 50;	// 언박싱 후 연산

 

문자열을 기본 타입 값으로 변환

  • 포장 클래스는 문자열을 기본 타입 값으로 변환할 때도 사용.
  • 대부분의 포장 클래스에는 'parse+기본타입' 명으로 되어 있는 정적 메소드 있음

 

 

포장 값 비교

  • 포장 객체는 번지를 비교하므로 내부 값을 비교하기 위해 ==와 != 연산자를 사용할 수 없음
Integer obj1 = 300;
Integer obj2 = 300;
System.out.println(obj1 = = obj2);
  • 다음 범위의 값을 갖는 포장 객체는 == 와 != 연산자로 비교 할 수 있지만, 내부 값을 비교하는 것이 아니라 객체 번지를 비교하는 것

  • 대신 포장 클래스의 equals()메소드로 내부 값을 비교할 수 있음

 

 

수학 클래스

 

Math 클래스

  • 수학 계산에 사용 할 수 있는 정적 메소드 제공

 

 

 

날짜와 시간 클래스

 

Date 클래스

  • 날짜를 표현하는 클래스로 객체 간에 날짜 정보를 주고 받을 때 사용
  • Date() 생성자는 컴퓨터의 현재 날짜를 읽어 Date 객체로 만듦
Date now = new Date();

 

 

 

Calendar 클래스

  • 달력을 표현하는 추상 클래스
  • getInstance() 메소드로 컴퓨터에 설정된 시간대 기준으로 Calendar 하위 객체를 얻을 수 있음
Calendar now = Calendar.getInstane();

 

 

 

날짜와 시간 조작

  • java.time 패키지의 LocalDateTime 클래스가 제공하는 메소드를 이용해 날짜와 시간을 조작가능

 

 

 

날짜와 시간 비교

  • LocalDataTime 클래스는 날짜와 시간을 비교할 수 있는 메소드 제공

 

 

 

 

 

 

형식 클래스

*

형식 클래스 : format()
숫자 또는 날짜를 원하는 형태의 문자열로 변환
DecimalFormat : 숫자 형식
SimpleDateFormat : 날짜 형식

*

 

 

 

 

DecimalFormat

  • 숫자를 형식화된 문자열로 변환

 

 

SimpleDateFormat

  • 날짜를 형식화된 문자열로 변환

 

 

 

정규 표현식 클래스

 

정규 표현식

  • 문자또는 숫자와 관련된 표현과 반복 기호가 결합된 문자열

 

 

 

 

 

 

 

 

 

Pattern 클래스로 검증

  • java.util.regex 패키지의 Pattern 클래스는 정규 표현식으로 문자열을 검증하는 matches() 메소드 제공
boolean result = Pattern.matchs("정규식", "검증할 문자열");

 

 

 

 

리프렉션

*

패키지 정보
클래스 이름

멤버 정보 얻기
Constructor[] getDeclaredConstructors() : 생성자 정보 읽기
Field[] getDeclaredFields()   : 필드 정보 읽기
Method[] getDeclaredMethods()   : 메소드 정보 읽기

*

 

 

리플렉션

  • Class 객체로 관리하는 클래스와 인터페이스의 메타 정보를 프로그램에서 읽고 수정하는 것
  • 메타 정보 : 패키지 정보, 타입 정보, 멤버(생성자, 필드, 메소드) 정보

 

패키지와 타입 정보 얻기

  • 패키지와 타입(클래스, 인터페이스) 이름 정보는 다음 메소드로 얻을 수 있음

 

 

리소스 경로 얻기

  • Class 객체는 클래스 파일(~.class)의 경로 정보를 기준으로 상대 경로에 있는 다른 리소스 파일(이미지,XML,Property 파일)의 정보를 얻을 수 있음

 

 

 

 

어노테이션

 

어노테이션

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

 

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

  • @interface 뒤에 사용할 어노테이션 이름 작성
public @interface AnnotationName{
}
@AnnotationName

 

 

 

어노테이션 적용대상

  • 어노테이션을 적용할 수 있는 대상의 종류는 ElementType 열거 상수로 정의
  • @Target 어노테이션으로 적용 대상 지정. @Target의 기본 속성 value 값은 ElementType 배열

 

 

 

어노테이션 유지 정책

  • 어노테이션 정의 시 @AnnotationName을 언제까지 유지할지 지정
  • 어노테이션 유지 정책은 RetentionPolicy 열거 상수로 정의

 

 

 

어노테이션 설정 정보 이용

  • 애플리케이션은 리플렉션을 이용해 적용 대상에서 어노테이션의 정보를 다음 메소드로 얻어냄

 

728x90
반응형