▷ 모든 모듈이 의존하는 기본 모듈 의존하는 기본 모듈로, 모듈 중 유일하게 requires 하지 않아도 사용할 수 있습니다.
NO
패키지
용도
1
java.lang
자바 언어의 기본 클래스 제공
2
java.util
자료 구조와 관련된 컬렉션 클래스를 제공
3
java.text
날짜 및 숫자를 원하는 형태의 문자열로 만들어 주는 포맷 클래스를 제공
4
java.time
날짜 및 시간을 조작하거나 연산하는 클래스를 제공
5
java.io
입출력 스트림 클래스를 제공
6
java.net
네트워크 통신과 관련된 클래스를 제공
7
java.nio
데이터 저장을 위한 Buffer 및 새로운 입출력 클래스 제공
(1) java.lang
▷ 자바 언어의 기본적인 클래스를 담고 있는 패키지.
▷ 이 패키지에 있는 클래스와 인터페이스는 import 없이 사용할 수 있습니다.
◎ Object 클래스
▷ 클래스를 선언할 때 extends 키워들로 다른 클래스를 상속하지 않으면 암시적으로 java.lang.Object 클래스를 상속
▶ 자바의 모든 클래스는 Object의 자식이거나 자손 클래스
1. 객체 동등 비교 ▷ Object의 equals() 메소드는 객체의 번지를 비교하고 boolean 값을 리턴
public boolean equals(Object obj)
2. 객체 해시코드 ▷ 객체를 식별하는 정수. Object의 hashCode() 메소드는 객체의 메모리 번지를 이용해서 해시코드를 생성하기 때문에 객체마다 다른 정수값을 리턴합니다.
public int hashCode()
▷ hashCode()가 리턴하는 정수 값이 같은지 확인하고, equals() 메소드가 true를 리턴하는지 확인해서 동등 객체임을 판단합니다.
3. 객체 문자 정보 ▷ 객체를 문자열로 표현한 값. Object의 toString() 메소드는 객체의 문자 정보를 리턴합니다. ▷ 기본적으로 Objcet의 toString() 메소드는 '클래스명@16진수해시코드'로 구성된 문자열을 리턴
Object obj = new Objcet();
System.out.println(obj.toString());
// java.lang.Object@de6ced
4. 레코드 선언 ▷ 데이터 전달을 위한 DTO(Data Transfer Object) 작성시 반복적으로 사용되는 코드를 줄이기 위해 도입
◎ 객체 동등 비교 예시
1. Member 클래스
public class Member {
public String id;
public Member(String id) {
this.id = id;
}
@Override
public boolean equals(Object obj) {
if(obj instanceof Member target) {
if(id.equals(target.id)) {
return true;
}
}
return false;
}
}
▷ obj와 Member가 같은 클래스이면 true를 출력합니다. (instanceof 함수) ▶ obj와 Member가 같은 클래스이면 obj를 Member로 강제 형 변환해서 target에 대입합니다. ▷ 그리고 id가 target.id랑 같으면 true를 출력합니다. ▷ 함수는 한 번 return을 받으면 그대로 실행이 종료됩니다.
2. EqualsExample 메인 클래스
public class EqualsExample {
public static void main(String[] args) {
Member obj1 = new Member("blue");
Member obj2 = new Member("blue");
Member obj3 = new Member("red");
if(obj1.equals(obj2)) {
System.out.println("obj1과 obj2는 동등합니다.");
} else {
System.out.println("obj1과 obj2는 동등하지 않습니다.");
}
if(obj1.equals(obj3)) {
System.out.println("obj1과 obj3는 동등합니다.");
} else {
System.out.println("obj1과 obj3는 동등하지 않습니다.");
}
}
}
// 출력 :
// obj1과 obj2는 동등합니다.
// obj1과 obj3는 동등하지 않습니다.
◎ 객체 해시코드 예시
1. Student 클래스
public class Student {
private int no;
private String name;
public Student(int no, String name) {
this.no = no;
this.name = name;
}
public int getNo() { return no; }
public String getName() { return name; }
@Override
public int hashCode() {
int hashCode = no + name.hashCode();
return hashCode;
}
@Override
public boolean equals(Object obj) {
if(obj instanceof Student) {
Student target = (Student) obj;
if(no == target.getNo() && name.equals(target.getName())) {
return true;
}
}
return false;
}
}
▷ equals는 원래 문자열 비교지만 클래스를 비교할 수 있도록 오버라이딩을 시켜줍니다.