728x90
반응형
SMALL

API 도큐먼트

저버 표준 모듈에서 제공하는 라이브러리는 방대하기 때문에 쉽게 찾아서 사용할 수 있도록 도와주는 API가 있다.

https://docs.oracle.com/en/java/javase/20/docs/api/index.html

 

Overview (Java SE 20 & JDK 20)

This document is divided into two sections: Java SE The Java Platform, Standard Edition (Java SE) APIs define the core Java platform for general-purpose computing. These APIs are in modules whose names start with java. JDK The Java Development Kit (JDK) AP

docs.oracle.com

 

java.base 모듈

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

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

 

Object 클래스

클래스를 선언할 때 extends 키워드로 다른 클래스를 상속하지 않으면 암시적으로 java.lang.Object 클래스를 상속하게 된다.

 

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

 

객체 동등 비교

Object obj1 = new Object();
Object obj2 = obj2;
boolean result = obj1.equals(obj2);
boolean result = (obj1 == obj2);

 

객체 해시코드

해시코드란 객체를 식별하는 정수

public int hashCode()

 

객체 문자 정보

Object의 toString() 메소드는 객체의 문자 정보를 리턴한다.

Object obj = new Object();
System.out.println(obj.toString());
//java.lang.Object@de6ced 결과

 

레코드 선언

데이터 전달을 위한 DTO(Data Tranfer Object)를 작성할 때 반복 코드를 줄이기 위해 레코드를 사용한다.

public record Person(String name, int age);

 

롬복 사용하기

롬복은 레코드와 마찬가지로 DTO 클래스를 작성할 때 사용한다.

레코드와의 차이점은 필드가 final이 아니며, Getter 대신 getXxx, Setter 대신 setXxx 로 생성된다.

1) https://projectlombok.org/download 접속

2) 설치파일(lombok.jar) 다운로드

3) lombok.jar을 eclipse 폴더로 이동하고 eclipse.ini 에 -javaagent:lombok.jar 추가

4) 프로젝트에서 [BuildPath]->[Add to Build Path]를 이용해 추가

 

어노테이션을 사용.

 

System 클래스

System클래스를 이용하면 운영체제의 일부 기능을 이용할 수 있다.

정적 멤버 용도
필드 out 콘솔(모니터)에 문자 출력
err 콘솔(모니터)에 에러 내용 출력
in 키보드 입력
메소드 exit(int status) 프로세스 종료
currentTimeMillis() 현재 시간을 밀리초 단위 long값으로 리턴
nanoTime() 현재 시간을 나노초 단위의 long값으로 리턴
getProperty() 운영체제와 사용자 정보 제공
getenv() 운영체제의 환경 변수 정보 제공

 

키보드 입력

int KeyCode = System.in.read();

 

프로세스 종료

System.exit(int status);

 

문자열 클래스

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

 

String 클래스

//기본 문자셋으로 byte 배열을 디코딩해서 String 객체로 생성
String str = new String(byte[] bytes);

//특정 문자셋으로 byte 배열을 디코딩해서 String 객체로 생성
String str = new String(byte[] bytes, String charsetName);

 

StringBuilder 클래스

리턴 타입 메소드(매개변수) 설명
StringBuilder append(기본값 | 문자열) 문자열을 끝에 추가
StringBuilder insert(위치, 기본값 | 문자열) 문자열을 지정 위치에 추가
StringBuilder delete(시작 위치, 끝 위치) 문자열 일부를 삭제
StringBuilder replace(시작 위치, 끝 위치, 문자열) 문자열 일부를 대체
String toString() 완성된 문자열을 리턴

 

StringTokenizer 클래스

String data = "홍길동&이수홍,박연수,김자바-최명호";
String[] name = data.split("[&|,-]");
String data="홍길동/이수홍/박연수";
StringTokenizer st = new StringTokenizer(data, ",\t/";

 

포장 클래스

기본 타입 포장 클래스
byte Byte
char Character
short Short
int Integer
long Long
float Float
double Double
boolean Boolean

 

박싱과 언박싱

* 박싱: 기본 타입의 값을 포장 객체로 만드는 과정

* 언박싱: 반대로 포장 객체에서 기본 타입의 값을 얻어내는 과정

Integer obj = 100; //박싱
int value = obj; //언박싱

 

포장 값 비교

포장 객체는 내부 값을 비교하기 위해 ==, != 사용 불가! 객체의 번지를 비교하기 때문

Integer obj1 = 300;
Integer obj2 = 300;
println(obj1 == obj2); //false

=> .equals() 이용해야 한다.

 

수학 클래스(Math)

구분 코드 리턴값
절대값 int v = Math.abs(-5); v = 5
올림값 double v= Math.ceil(5.3); v = 6.0
내림값 double v = Math.foor(5.3); v = 5.0
최대값 int v = Math.max(5,9); v = 9
최소값 int v = Math.min(5,9); v = 5
랜덤값 double v11 = Math.random(); 0.0<=v11<1.0
반올림값 long v = Math.round(5.3); v = 5

 

날짜와 시간 클래스

클래스 설명
Date 날짜 정보를 전달하기 위해 사용
Calendar 다양한 시간대별로 날짜와 시간을 얻을 때 사용
LocalDateTime 날짜와 시간을 조작할 때 사용

 

Date 클래스

Date now = new Date();
public class DateExample {

	public static void main(String[] args) {
		Date now= new Date();
		String strNow1= now.toString(); 
		System.out.println(strNow1);//Fri Apr 21 11:00:43 KST 2023
		
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
		String strNow2=sdf.format(now);
		System.out.println(strNow2);//2023.04.21 11:00:43
		
		Date date = new Date();
		System.out.println(date);
		System.out.println(date.getTime());//1682042443861밀리초
        
		java.sql.Date date2 = new java.sql.Date(date.getTime());
		System.out.println(date2); //2023-04-21
		System.out.println(System.currentTimeMillis()); //밀리초
		System.out.println(new java.sql.Date(System.currentTimeMillis())); //2023-04-21
		
		
	}

}

 

Calendar 클래스

Calendar now = Calendar.getInstance();
int year = now.get(Calendar.YEAR);
int month = now.get(Calendar.MONTH) + 1; //월은 0부터 시작
int day = now.get(Calendar.DAY_OF_MONTH);
int week = now.get(Calendar.DAY_OF_WEEK);
int amPm = now.get(Calendar.AM_PM);
int hour = now.get(Calendar.HOUR);
int minute = now.get(Calendar.MINUTE);
int second = now.get(Calendar.SECOND);

TimeZone 클래스를 이용해 알고 싶은 다른 시간대의 Calendar을 얻을 수 있다.

TimeZone timeZone = TimeZone.getTimeZone("America/Los_Angeles");
Calendar now = Calendar.getInstance(timeZone);

 

날짜와 시간 조작

LocalDateTime now = LocalDateTime.now();
public class DateTimeOperationExample {

	public static void main(String[] args) {
		LocalDateTime now= LocalDateTime.now();
		DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy.MM.dd. a HH:mm:ss");
		System.out.println("현재 시간: "+now.format(dtf));
		
		LocalDateTime result1=now.plusYears(1);
		System.out.println("1년 덧셈: "+result1.format(dtf));
		
		LocalDateTime result2 = now.minusMonths(2);
		System.out.println("2달 뺄셈: "+result2.format(dtf));
		
		LocalDateTime result3 = now.plusDays(7);
		System.out.println("7일 덧셈: "+result3.format(dtf));
	}

}

/*
결과
현재 시간: 2023.04.21. 오전 11:10:22
1년 덧셈: 2024.04.21. 오전 11:10:22
2달 뺄셈: 2023.02.21. 오전 11:10:22
7일 덧셈: 2023.04.28. 오전 11:10:22
*/

 

형식 클래스

Format 클래스 설명
DecimalFormat 숫자를 형식화된 문자열로 변환
SimpleDateFormat 날짜를 형식화된 문자열로 변환

 

정규 표현식 클래스

//이메일 형식
String str="\\w+@\\w+\\.\\W+(\\.\\W+)?";

//전화번호 형식
String phone="(02|010)-\\d{3,4}-\\d{4}";

 

어노테이션

어노테이션

- 코드에서 @으로 작성되는 요소

- 클래스 또는 인터페이스를 컴파일하거나 실행할 때 어떻게 처리해야 할 것인지를 알려주는 설정 정보

용도

1) 컴파일 시 사용하는 정보 전달

2) 빌드 툴이 코드를 자동으로 생성할 때 사용하는 정보 전달

3) 실행 시 특정 기능을 처리할 때 사용하는 정보 전달

 

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

- @interface 뒤에 사용할 어노테이션 이름 작성

public @interface AnnotationName{

}
@AnnotationName

 

어노테이션 적용 대상(어디에)

@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})
public @interface AnnotationName{

}

 

어노테이션 유지 정책(언제)

RententionPolicy 열거 상수 어노테이션 적용 시점 어노테이션 제거 시점
SOURCE 컴파일 할 때 적용 컴파일된 후에 제거됨
CLASS 메모리로 로딩할 때 적용 메모리로 로딩된 후에 제거됨
RUNTIME 실행할 때 적용 계속 유지됨
@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface AnnotationName{

}

 

어노테이션 설정 정보 이용

리턴 타입 메소드명(매개변수) 설명
boolean isAnnotationPresent(AnnotationName.class) 지정한 어노테이션이 적용되었는지 여부
Annotation getAnnotation(AnnotationName.class) 지정한 어노테이션이 적용되어 잇으면 어노테이션을 리턴하고, 그렇지 않으면 null리턴
Annotation[] getDeclaredAnnotations() 적용된 모든 어노테이션을 리턴

 

728x90
반응형
LIST

'IT > JAVA' 카테고리의 다른 글

[JAVA] #14 멀티 스레드  (0) 2023.04.26
[JAVA] #13 제네릭  (0) 2023.04.24
[JAVA] #11 예외 처리  (0) 2023.04.19
[JAVA] #10 라이브러리 모듈  (0) 2023.04.18
[JAVA] #9 중첩 선언과 익명 객체  (0) 2023.04.17

+ Recent posts