1. 반환되는 문자열
클래스 이름과 함께 구분자로 '@'가 사용되며, 뒤로 인스턴스의 주소를 가리키는 값인 16진수 해시코드가 추가된다.
getClass().getName + '@' + Integer.toHexString(hashCode())
package S1U8;
public class ObjectMethod {
public static void main(String[] args) {
ObjectClass objectClass1 = new ObjectClass(1,"object1");
ObjectClass objectClass2 = new ObjectClass(2,"object2");
System.out.println(objectClass1.toString());
System.out.println(objectClass2.toString());
}
}
class ObjectClass{
int id;
String name;
ObjectClass(int id, String name) {
this.id = id;
this.name = name;
}
}
2. 하위 클래스에서 재정의하여서 사용하는 것을 권장한다.
@Override
public String toString(){
return String.format("id는 %d이고, name은 %s입니다.", id, name);
}
하위 클래스에 다음과 같이 toString() 메서드를 재정의하면 다음과 같이 출력된다.
3. 클래스마다 자체적으로 오버라이딩을 통해 재정의되어있다.
int[] arr = new int[]{1,2,3,4,5};
System.out.println("Object class method toString()로 출력한 arr 값 : " + arr.toString());
System.out.println("Array class method toString()로 출력한 arr 값 : " + Arrays.toString(arr));
Arrays 클래스에서 자체적으로 오버라이딩하여 배열의 주소값이 아닌 배열에 있는 값이 출력된다.
'Language > Java' 카테고리의 다른 글
[Java] Collection 프레임워크 (0) | 2023.05.15 |
---|---|
[Java/ERROR] ConcurrentModificationException (0) | 2022.12.09 |
[Java] Object 클래스 (0) | 2022.11.07 |
[Java] 기타 제어자 (0) | 2022.11.07 |
[Java] this 키워드 (0) | 2022.11.04 |