본문 바로가기

Language/Java

[Java] Object 클래스 메소드 - toString()

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