인프런 커뮤니티 질문&답변

김민식님의 프로필 이미지
김민식

작성한 질문수

JAVA Scanner

작성

·

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)을 이용하거나, 같은 객체 참조를 직접 할당하는 방법이 있죠.

답변이 도움이 되셨길 바랍니다. 추가적인 궁금증이 있으시면 문의해 주세요. 감사합니다!

김민식님의 프로필 이미지
김민식

작성한 질문수

질문하기