쉽게 배우는 자바 프로그래밍
public class SomeClass{}
public class SomeClass extends Object{}
Object 클래스가 제공하는 주요 메서드 중에서 toString(), equals(), hashCode() 에 대해 알아보자!
class Mouse{
String name;
public Mouse(String name){
this.name = name;
}
}
class Keyboard{
String name;
public Keyboard(String name){
this.name = name;
}
public String toString(){
return "키보드입니다.";
}
}
public class ObjectMethodDemo{
public static void main(String[] args){
Mouse m1 = new Mouse("Logitech");
keyboard k1 = new Keyboard("Microsoft");
System.out.println(m1.toString()); //Mouse@28a418fc
System.out.println(m1); //Mouse@28a418fc
System.out.println(k1.toString()); //키보드입니다
System.out.println(k1); //키보드입니다.
}
}
Mouse 클래스는 Object 클래스에서 물려받은 메서드를 그대로 사용하지만, Keyboard 클래스는 오버라이딩해서 사용한다.
Mouse는 Object 클래스에서 물려받은 toString()의 결과로서 객체의 문자 정보를 반환한다.
객체 자체를 출력하면 객체의 toStirng()메서드의 결과를 출력한다는 것을 새로 알게 되었다!
Keyboard는 toString() 메서드를 오버라이딩 했으므로 키보드입니다가 출력된다.
class Mouse{
String name;
public Mouse(String name){
this.name = name;
}
}
class Keyboard{
String name;
public Keyboard(String name){
this.name = name;
}
public boolean equals(Object obj){
if(obj instanceof Keyboard){
Keyboard k = (keyboard) obj;
if(name.equals(k.name))
return true;
}
return false;
}
}
public class ObjectMethodDemo{
public static void main(String[] args){
Mouse m1 = new Mouse("Logitech");
Mouse m2 = new Mouse("Logitech");
keyboard k1 = new Keyboard("Microsoft");
keyboard k2 = new Keyboard("Microsoft");
System.out.println(m1.equals(m2)); //false
System.out.println(k1.equals(k2));//true
}
}
Mouse 클래스는 Object 클래스에서 상속받은 equals()메서드를 사용한다. 따라서 내용이 동일하더라도 false를 반환한다.
Keyboard 클래스는 equas() 메소드를 오버라이딩 했기 때문에 true를 반환한다.
String s = new String("hi");
System.out.println(s.hashCode()); //3329
s = s + "!";
System.out.println(s.hashCode()); //103232
String은 불변하기 때문에 ! 를 더하면 다른 객체이다.
따라서 hashCode가 다른 것을 볼 수 있다.
https://velog.io/@eunseo2/JAVA-StringBuffer-%EC%99%9C-%EC%93%B0%EB%8A%94%EA%B0%80
=> String에 대해서 더 알고 싶으면 위 링크로 GoGo!