Day02 [예제] 문자열 동등성 비교의 결과차이
by 효기’s
package test;
public class study03 {
public static void main(String[] args) {
// String str1 = "Superman";
// String str2 = "Superman";
String str1 = new String("Superman");
String str2 = new String("Superman");
if(str1.equals(str2)) {
System.out.println("Same");
}else {
System.out.println("diff");
}
if(str1 == str2){
System.out.println("Same");
}else {
System.out.println("diff");
}
}
}
Q. 주석처리한 부분은 결과값이 Same, Same 으로 나오지만
주석처리되지 않는 부분은 Same, diff 값을 출력하는 이유를 설명해줘
위 코드에서 주석 처리된 부분은 `String str1 = "Superman";`과 `String str2 = "Superman";`라는 두 개의 문자열을 생성합니다. 이 경우에는 문자열 리터럴을 사용하여 문자열을 생성했기 때문에 동일한 문자열 리터럴을 가리키는 같은 주소를 참조하게 됩니다. 따라서 `str1`과 `str2`는 같은 객체를 참조하게 되므로 `str1.equals(str2)`와 `str1 == str2` 모두 true를 반환합니다. 따라서 "Same"이라는 결과가 출력됩니다.
하지만 주석 처리되지 않은 부분에서는 `String str1 = new String("Superman");`과 `String str2 = new String("Superman");`라는 문자열을 생성합니다. 이 경우에는 `new` 키워드를 사용하여 명시적으로 새로운 문자열 객체를 생성하게 됩니다. 따라서 `str1`과 `str2`는 각각 다른 객체를 참조하게 되므로 `str1.equals(str2)`는 true를 반환하지만 `str1 == str2`는 false를 반환합니다. 따라서 "Same"과 "diff"라는 결과가 출력됩니다.
'Studying > JAVA' 카테고리의 다른 글
Day05 JAVA Studying (0) | 2023.07.07 |
---|---|
Day04 JAVA Studying (0) | 2023.07.06 |
Day03 JAVA Studying (0) | 2023.07.05 |
Day02 JAVA Studying (0) | 2023.07.04 |
Day01 JAVA Studying (0) | 2023.07.04 |
블로그의 정보
감성 개발자 효기
효기’s