디버깅시 유용한 <객체의 참조값 반환 방법>

CosmoNumb·2024년 7월 19일
0

java

목록 보기
2/24

아래 코드에 있는 refValue 메서드는 주어진 객체의 "참조 값"을 16진수 문자열로 반환합니다. 이를 통해 객체가 메모리에서 어떤 위치에 있는지를 확인할 수 있습니다. 쉽게 말해, 이 메서드는 객체의 고유 식별자를 16진수로 변환하여 반환하는 역할을 합니다.

코드 설명

private static String refValue(Object grade) {
    return Integer.toHexString(System.identityHashCode(grade));
}
  1. Object grade: 이 메서드는 모든 종류의 객체(grade)를 인자로 받을 수 있습니다.
  2. System.identityHashCode(grade): 이 부분은 객체의 고유 식별자(해시 코드)를 반환합니다. identityHashCode는 객체의 메모리 주소와 관련된 고유한 정수 값을 반환합니다. 이 값은 Object 클래스의 hashCode 메서드와 비슷하지만, 오버라이딩된 hashCode 메서드의 영향을 받지 않습니다.
  3. Integer.toHexString(...): 이 부분은 정수 값을 16진수 문자열로 변환합니다. 예를 들어, 정수 값 255는 16진수로 "ff"가 됩니다.

예시

public static void main(String[] args) {
    Object obj = new Object();
    String refValueStr = refValue(obj);
    System.out.println("Reference value: " + refValueStr);
}

위의 예제에서 Object obj = new Object();는 새로운 객체를 생성합니다. refValue(obj)는 이 객체의 참조 값을 16진수로 변환하여 문자열로 반환합니다. 출력 예시는 다음과 같습니다:

Reference value: 7c30a5e4

이 예시에서 "7c30a5e4"는 객체의 고유 식별자를 16진수로 변환한 값입니다. 이 값은 객체가 메모리에서 어디에 위치하는지를 간접적으로 나타내며, 같은 객체에 대해 항상 동일한 값을 반환합니다.

요약

  • System.identityHashCode(grade): 객체의 고유 식별자를 정수 값으로 반환합니다.
  • Integer.toHexString(...): 정수 값을 16진수 문자열로 변환합니다.
  • refValue 메서드: 객체의 고유 식별자를 16진수 문자열로 반환합니다.

이 메서드는 주로 디버깅 목적으로 객체의 고유 식별자를 확인할 때 유용하게 사용할 수 있습니다.

0개의 댓글