Message : String 타입의 변수를 비교할 때
1번) A.equals(B)
2번) A == B
1번과 2번의 결과값은 서로 다를까? 같을까?
Solution :
- 문자열로 비교하면 같지만,
(예1) String A = "Sample";
String B = "Sample";
System.out.println((A == B));
System.out.println(A.equals(B));
(결과값) == 도 true
equals 도 true 반환
- 객체로 비교하면 다르다.
(예2) String A = new String("Sample");
String B = new String("Sample");
System.out.println((A == B));
System.out.println(A.equals(B));
(결과값) == 는 truefalse
equals 는 falsetrue 반환
Explanation :
A,B는 하나의 String 객체가 된다. (컴파일시에 자동으로)
C,D는 별도의 객체가되된다.
즉, 문자열 리터럴(값)으로 비교를 하면 a,b,c,d 모두 같지만,
객체로 비교를 하게 되면 (a,b),c,d의 3개의 객체가 된다.
※ 자바에서는 A,B처럼 같은 값을 가지면 하나의 메모리 주소를 참조하게 됩니다.
더 자세한 설명 및 출처: http://westzero.net/21
'IT > Java' 카테고리의 다른 글
[Java]문자열 큰따옴표 안에 따옴표 인식 (0) | 2012.11.18 |
---|