작성
·
101
·
수정됨
0
package bufferTest;
import java.util.Scanner;
public class BufferTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String a = scan.next();
String[] arr1 = {"a"};
System.out.println(System.identityHashCode(a));
System.out.println(System.identityHashCode(arr1[0]));
}
}
왜 arr[0]과 a의 주소 값이 다른가요..???
답변 주시면 정말 감사하겠습니다!
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
System.identityHashCode()
함수는 객체의 System Identity Hash Code 값을 반환하는데, 이는 객체마다 다른 값을 가집니다. Java에서 String
은 immutable(불변)한 객체입니다. scan.next()
를 통해 받은 입력 값 a
는 새로운 String
객체를 생성하고, 이 객체는 arr1[0]
에 저장된 문자열 “a”와 독립적입니다. 즉, 두 문자열이 내용은 같지만 실제로는 메모리 상에서 두 개의 서로 다른 객체로 존재합니다. 그래서 System.identityHashCode()
의 결과가 서로 다릅니다.
만약 두 값이 같게 나오길 원한다면, 어떤 방식으로든 두 참조가 같은 객체를 가리키도록 해야 합니다. 예를 들어, 문자열 풀(String Pool)을 이용하거나, 같은 객체 참조를 직접 할당하는 방법이 있죠.
답변이 도움이 되셨길 바랍니다. 추가적인 궁금증이 있으시면 문의해 주세요. 감사합니다!