• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

문자열 비교 질문

22.12.21 15:28 작성 조회수 253

1

코드 내에서 s1 이 "1234"이고, s2 가 "1234" 라면 같은 메모리에서 참조되는 것이어서

== 이 같다라고 인식된다면 ==는 주소값을 기준으로 판단하는 것인가요?

답변 1

답변을 작성해보세요.

2

안녕하세요?
나도코딩입니다. ^^

말씀해주신 부분이 맞습니다.

String s1 = "1234";
String s2 = "1234";

와 같이 하게 되면 메모리 공간에 "1234" 가 하나만 생성되며 s1, s2 변수는 동일한 위치를 참조하게 됩니다. 그리고 == 연산자를 사용하여 둘을 비교하게 되면 이들이 참조하고 있는 메모리 주소값을 기준으로 판단하며 예제의 경우 같은 곳을 참조하기 때문에 true 가 됩니다.

String s1 = new String("1234");
String s2 = new String("1234");

와 같이 하게 되면 메모리 공간에 서로 다른 "1234" 가 각각 생성되며 s1, s2 변수는 서로 다른 위치를 참조하게 됩니다. 그래서 == 연산을 통한 비교 결과는 false 가 됩니다.

감사합니다.

lchm1106님의 프로필

lchm1106

질문자

2022.12.22

상세한 설명 감사합니다!!