Java 에서 문자열 비교할때 equals() 말고 == (비교연산자) 로 비교하기


왠지 도움이 될것 같다면 추천을 *(-_-)*


오늘 이클립스에서 작업하다 스트링 객체 다음에 . 을 찍고 뭐 쓸만한게 없나 문득 살펴봤다.

왠지 늘 쓰던거만 쓰면 재미없지 않은가! 뭐 재미진 메소드가 없나 하는 요런 마음?


고러던 와중 그동안 즌혀 관심 1g 조차 없었던 intern() 이라는 메소드가 보였다.

이클립에서 뽓 튀어 나오는 설명을 대충 쪽 읽어보니 == 으로 스트링이 똑같은지 비교를 해주게 하는것 같았다.



뭐! 요런게 있었던 말이가! 하면서 요즘 나온 JAVA7 에 새로 추가된 메소드 인가 하고 API 를 찾아보니 JDK 1.3 부터도 있었던 메소드였다 -_-;;

아무튼 요 메소드를 쓸 일은 거의 1% 미만이지만 왠지 재미진것 같으니깐 알아는 둬야지

대충 요딴식으로 사용한다.
String a = new String("3269");
String b = new String("3269");

System.out.println(a == b);    // false

System.out.println(a.intern() == b);    // false

System.out.println(a.intern() == b.intern());    // true



음 막상 코드를 작성하고 나서 보니 "3269".equals(a); 가 훨씬 더 좋구나 라고 생각이 든다 -_-;  분명히 무슨 용도가 있기 때문에 맹근 메소드일껀데 아직까진 그 용도가 잘 파악이 안된다.


※ 비교연산자는 == 요것만 되는것 같다 < , > 요런건 안됨. 컴파일 에러남 

Trackback 0 Comment 1
  1. 과객 2012.03.04 19:34 address edit & del reply

    intern 메소드는 원래 String 객체의 특성이 고려된 메소드입니다.
    String 객체의 특성은 일종의 케쉬(pool)이면서 불변의 원칙을 가지고 있죠
    즉 이미 생성된 문자열이 있다면 케쉬에서 가져와서 반환하고..
    없으면 생성하여 저장하면서 반환합니다.

    다음에 동일한 문자열을 요청하게 되면 이미 생성된 객체가 리턴되는데..
    이때 이미 등록되어 있는지 않되어 있는지 내부적으로 확인하는 메소드가 intern 입니다.
    따라서 개발자가 쓸 용도도 아니고.. 쓰일일이 String 객체를 확장하거나.. 등등
    아주 특정한 상황이 아닌 담에는 쓰이지 않습니다.

    음.. 뭘 찾다가 여길 온건지 까먹은 @.@

prev 1 ··· 112 113 114 115 116 117 118 119 120 ··· 223 next