JAVA/Java2021-2
Object 클래스 (모든 클래스의 최상위 클래스) toString, equals, hashcode, clone() 메서드
RoarinGom
2021. 10. 7. 17:40
모든 클래스는 Object 클래스를 상속 받는다. class 모든클래스 extends Object{} 라고 컴파일러가 자동으로 붙여준다.
java.lang 패키지 : 프로그래밍 시 import 하지 않아도 자동으로 import 된다.
ex) String, Integer, System
종류
-toString()
-equals()
-hashCode()
ex1) equals()
package Basic_Grammar.chap4.ch02Object;
public class EqualsTest {
public static void main(String[] args) {
Student stu1=new Student(100,"Lee");
Student stu2=new Student(100,"Lee");
Student stu3=stu1;
System.out.println(stu1==stu2);
System.out.println(stu1.equals(stu2));
System.out.println(stu1==stu3);
}
}
첫번째 결과
ex2) 논리적으로 같은것 처리해주기. override(equals())
-> equals() 함수 overriding 후 실행한 결과
ex2) 논리적으로 같은것 처리해주기. override(hashCode())
hashCode() 오버라이딩 하기전(왼), 처리하고 난 후 (오른쪽) : hash코드값이 같아짐 결과
package Basic_Grammar.chap4.ch02Object;
public class EqualsTest {
public static void main(String[] args) {
Student stu1 = new Student(100, "Lee");
Student stu2 = new Student(100, "Lee");
Student stu3 = stu1;
System.out.println(stu1 == stu2);
System.out.println(stu1.equals(stu2));
System.out.println(stu1 == stu3);
// 해시코드값 확인
System.out.println(stu1.hashCode());
System.out.println(stu2.hashCode());
;
}
}
진짜 해시코드 찾으려면
System.identityHashCode()
clone()
: 클래스에 implements Cloneable 해주어야한다. (보안적인 이유에서 클론이 되면 접근제한자 무의미, 그래서 클론을 해도 되는 것은 cloneable 을 implements 해주어야한다.
package Basic_Grammar.chap4.ch02Object;
public class EqualsTest {
public static void main(String[] args) throws CloneNotSupportedException {
Student stu1 = new Student(100, "Lee");
Student stu2 = new Student(100, "Lee");
Student stu3 = stu1;
System.out.println(stu1 == stu2);
System.out.println(stu1.equals(stu2));
System.out.println(stu1 == stu3);
// 해시코드값 확인
System.out.println(stu1.hashCode());
System.out.println(stu2.hashCode());
Student copyStudent=(Student) stu1.clone();
System.out.println(stu1);
System.out.println(copyStudent);
System.out.println(stu1==copyStudent);
}
}
implements Cloneable 한 후 ->