자바질문좀 할까 합니다 ........
글리슨
public class StringEx1 {
public static void main(String[] args) {
String str1 = abc;
String str2 = abc;
System.out.println( String str1 = \abc\;);
System.out.println( String str2 = \abc\;);
if(str1 == str2) {
System.out.println( str1 == str2 ? true);
} else {
System.out.println( str1 == str2 ? false);
}
if(str1.equals(str2)) {
System.out.println( str1.equals(str2) ? true);
} else {
System.out.println( str1.equals(str2) ? false);
}
System.out.println();
String str3 = new String(\abc\);
String str4 = new String(\abc\);
System.out.println( String str3 = new String(\abc\););
System.out.println( String str4 = new String(\abc\););
if(str3 == str4) {
System.out.println( str3 == str4 ? true);
} else {
System.out.println( str3 == str4 ? false);
}
if(str3.equals(str4)) {
System.out.println( str3.equals(str4) ? true);
} else {
System.out.println( str3.equals(str4) ? false);
}
}
}
이소스를 짲느대요 여기서 결과도 물론나오구요 근데 왜 그런결과가 나왔는지 이해가 안되서요 ㅠㅠ
혹시 아시는분 답변달아주시면 감사하겠습니다.~
-
하연
후루쓰님 감사드립니다^^
-
해비치
== 는 객체를 비교하는 연산자이고, equals 는 객체의 값을 비교하는 함수인데요....
new 해서 객체를 생성하는것을 == 로 비교할때는 당연히 각각이 new 로 생성된 서로다른 객체이므로 false가 나오는것이구여....위에서는 일반 stack 메모리 영역에 잡히는 같은객체내에서 선언된 local 변수이므로, == 비교시 true 로 리턴되는것입니다. 허접한 답변이었습니다. *^^*