본문 바로가기
Develop/Java

0902

by ys2ys2 2024. 9. 6.

Java.base 모듈

 - 모든 모듈이 의존하는 기본 모듈. 유일하게 requires 하지 않아도 사용 가능

 

java.lang 패키지의 클래스나 인터페이스는 import 없이 사용 가능

기본 패키지들 - java.lang / java.util / java.text / java.time / java.io / java.net / ( 이 외에도 엄청 많은 패키지들 존재 )

 

Object 클래스 → equals, toString
클래스 선언 시 extends 키워드로 다른 클래스 상속하지 않으면 암시적으로 java.lang.Object 클래스를 상속한다.

 

객체 동등 비교

Object의 equals() 메소드는 객체의 번지를 비교하고 boolean 값을 리턴한다.

public boolean equals(Object obj);

 

객체 해시코드

객체를 식별하는 정수. Object의 hashcode() 메소드는 객체의 메모리 번지(객체의 주소값)을 이용해서 해시코드를 생성하기 때문에 객체마다 다른 정수값을 리턴.

 

그럼 언제 쓰지? -> 키 값을 저장하는 set이라는 컬렉션 쓸 때, set은 같은 데이터를 저장하지 않는다

그러면 저장하려고 하는 객체가 같은지 다른지 체크를 해야한다!

 

먼저 hashCode값을 본다.(같은지 아닌지) 같으면 equals method를 보고, 그것도 같으면 두 객체는 같은 객체로 본다.

똑같은 내용을 가지고 있는 객체가 set이라는 자료구조에 저장되는 것을 막도록 정의를 한다면

Object 클래스에서 지원해주는 equals method하고 hashCode method를 재정의 해주면 된다.

 

public int hashCode()

 

hashCode()가 리턴하는 정수값이 같은지 확인하고, equals()메소드가 true를 리턴하는지 확인해서 동등 객체임을 판단.

hashCode() 리턴값 → 같으면 → equals()리턴값 → true → 동등 객체

 

객체 문자 정보

toString() 메소드

객체를 문자열료 표현한 값. Object의 toString() 메소드는 객체의 문자 정보를 리턴

Object obj = new Object();
System.out.println(obj.toString());

 

System 클래스

System 클래스의 정적 static 필드와 메소드를 이용하면

프로그램 종료, 키보드 입력, 콘솔(모니터) 출력, 현재 시간 읽기, 시스템 프로퍼티 읽기 등 가능

 

String 클래스

String 클래스는 문자열을 저장, 조작할 때 사용

문자열 리터럴은 자동으로 String 객체로 생성, String 클래스의 다양한 생성자를 이용해서 직접 객체 생성도 가능.

한 번 생성되면 절대 변하지 않는다.(불변법칙)

String str = new String(byte[] bytes),
String str = new String(byte[] bytes, String charsetName);

 

StringBuilder 클래스

잦은 문자열 변경 작업을 해야 한다면? → StringBuilder 클래스 사용!

내부 버퍼에 문자열 저장해두고 그 안에서 추가,수정,삭제 작업을 하도록 설계되어 있다.

(append, insert, delete, replace, 다 끝내고는 toString으로 반환받아서 쓸 수 있다)

String data = "ABC";
data += "DEF";

 

StringTokenizer 클래스

문자열에 여러 종류가 아닌 한 종류의 구분자만 있다면! → StringTokenizer를 사용할 수도 있음

첫 번째 매개값으로 전체 문자열 주고, 두 번째 매개값으로 구분자를 준다. (구분자 생략 시 공백이 기본 구분자)

String data = "김/이/박/";
StringTokenizer st = new StringTokenizer(data, "/");

 

포장 객체

기본 타입 (byte, char, short, int, long, float, double, boolean)의 값을 갖는 객체

포장하고 있는 기본 타입 값 변경 X, 단지 객체로 생성하는 목적

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

 

박싱? 언박싱?

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

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

* 대부분의 포장 클래스에는 parse + 기본타입 명으로 되어 있는 정적 메소드가 있다!

 

포장 값 비교

포장 객체는 번지를 비교하므로 내부 값을 비교하기 위해 ==와 != 연산자를 사용할 수 없다.

Integer obj1 = 300;
Integer obj2 = 300;
System.out.println(obj1 = = obj2);

 

Math 클래스

주로 사용하는 메소드만 나열!

절대값 abs 올림값 ceil 버림값 floor 최대값 max 최소값 min 난수발생 random 반올림 round

 

리플렉션

Class 객체로 관리하는 클래스와 인터페이스의 메타 정보를 프로그램에서 읽고 수정

메타 정보? - 패키지 정보, 타입 정보, 멤버(생성자, 필드, 메소드) 정보

Class clazz = 클래스이름.class;
Class clazz = Class.forName("패키지 클래스이름");
Class clazz = 객체참조변수.getClass();

 

패키지와 타입 정보 얻기

Package getPackage()	//패키지 정보 읽기
String getSimpleName()	//패키지를 제외한 타입 이름
String getName()	//패키지를 포함한 전체 타입 이름

 

리소스 경로 얻기

Class 객체는 클래스 파일의 경로 정보를 기준으로

상대 경로에 있는 다른 리소스 파일(이미지,XML,Property 파일)의 정보를 얻을 수 있다!

 

날짜와 시간 조작

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

 

날짜와 시간 비교

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

 

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

SimpleDateFormat

 

'Develop > Java' 카테고리의 다른 글

MVC 이해하기  (2) 2024.10.12
0903  (2) 2024.09.07