아래 코드에 있는 refValue
메서드는 주어진 객체의 "참조 값"을 16진수 문자열로 반환합니다. 이를 통해 객체가 메모리에서 어떤 위치에 있는지를 확인할 수 있습니다. 쉽게 말해, 이 메서드는 객체의 고유 식별자를 16진수로 변환하여 반환하는 역할을 합니다.
private static String refValue(Object grade) {
return Integer.toHexString(System.identityHashCode(grade));
}
Object grade
: 이 메서드는 모든 종류의 객체(grade
)를 인자로 받을 수 있습니다.System.identityHashCode(grade)
: 이 부분은 객체의 고유 식별자(해시 코드)를 반환합니다. identityHashCode
는 객체의 메모리 주소와 관련된 고유한 정수 값을 반환합니다. 이 값은 Object
클래스의 hashCode
메서드와 비슷하지만, 오버라이딩된 hashCode
메서드의 영향을 받지 않습니다.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진수 문자열로 반환합니다.이 메서드는 주로 디버깅 목적으로 객체의 고유 식별자를 확인할 때 유용하게 사용할 수 있습니다.