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

+ Recent posts