이 글은 자바의 정석을 읽고 개인적으로 공부한 내용을 정리한 글입니다 :>
java.lang패키지와 유용한 클래스
java.lang패키지는 자바프로그래밍에 가장 기본이 되는 클래스들을 포함하고 있기 때문에, import문 없이도 사용할 수 있다.
Object는 모든 클래스의 최고 조상!이기 때문에 Object클래스의 멤버들은 모든 클래스에서 바로 사용할 수 있다.
멤버 변수는 없고, 11개의 메서드만 가지고 있다.
(1) equels(Object obj)
class Value {
int value;
Value(int value) {
this.value = value;
}
}
class EqualsEx {
public static void main(String[] args) {
Value v1 = new Value(10);
Value v2 = new Value(10);
if(v1.equals(v2)){
System.out.println("v1 == v2");
} else {
System.out.println("v1 != v2");
}
}
equals 메서드로 서로 같은 객체를 비교하면 true 반환, 서로 다른 객체를 비교하면 false 반환
(2) hashCode()
해싱은 데이터관리기법 중의 하나로 다량의 데이터르 저장하고 검색하는 데 유용하다.
찾고자하는 값을 입력하면 그 값이 저장된 위치를 알려주는 해시코드(hash code)를 반환한다.
class HashCodeEx {
public static void main(String[] args){
String str1 = new String("abc");
String Str2 = new String("abc");
System.out.println(str1.equals(str2));
System.out.println(str1.hashCode()); // 96354
System.out.println(str2.hashCode()); // 96354
System.out.println(System.identityHashCode(str1)); // 27134973
System.out.println(System.identityHashCode(str2)); // 1284693
}
}
* String 클래스는 문자열의 내용이 같으면, 동일한 해시코드를 반환하도록 hashCode메서드가 오버라이딩 되어 있기 때문에, 문자열의 내용이 같은 str1과 str2에 대해 hashCode()를 호출하면 항상 동일한 해시코드값을 얻는다.
* 반면에 System.identiyHashCode(Object x)는 Object클래스의 hashCode메서드처럼 객체의 주소값으로 해시코드를 생성하기 때문에 모든 객체에 대해 항상 다른 해시코드 값을 반환한다. -> 실행할 때마다 호출결과는 달라짐
(3) toString()
Object 클래스에 정의된 toString()메서드는 아래와 같다.
public String toString() {
return getClass().getName()+"@"+Integer.toHexString(hashCode());
}
(4) clone()
자신을 복제하여 새로운 인스턴스를 생성하는 메서드
................... (추가 중) .................
'뚝딱뚝딱 > Java' 카테고리의 다른 글
[Java] 2차원 리스트 다루기 (0) | 2024.04.30 |
---|---|
[Error] java.util.NoSuchElementException: No value present (0) | 2022.07.22 |
[Java] 자바의 정석 Chapter 8 예외처리 (0) | 2022.05.22 |
[Java] 자바의 정석 Chapter6 ~ Chapter7 (0) | 2022.05.15 |
[Java] 자바의 정석 Chapter1 ~ Chapter5 (0) | 2022.05.13 |