2013년 5월 28일 화요일

String 문자열 비교

문자열 비교 method

- equals(Object anObject)
- equalsIgnoreCase(String anotherStr) : 대소문자 무시
- compareTo(String anotherStr)
    : 같으면 0 반환, String 객체가 알파벳 순으로 앞이면 양수, 뒤면 음수,
      알파벳 순서만큼 그 숫자값은 커진다.
- compareToIgnoreCase(String str) : 대소문자 무시
- contentEquals(CharSequence cs)
- contentEquals(StringBuffer sb)

 
 
- 자바에서는 객체들을 재사용하기 위해 Constant Pool이라는 것이 만들어져 있고, String의 경우 동일한 값을 갖는 객체가 있으면, 이미 만든 객체를 재사용한다.
 따라서 text와 text2 객체는 실제로는 같은 객체다. 그래서 결과가 윗부분 처럼 나온다.
 
 String text2 = new String("Check value") 이런식으로 객체를 생성하게 되면 값이 같은 String 객체를 생성한다고 하더라도 Constant Pool의 값을 재활용하지 않고 별도의 객체를 생성한다.
 그래서 결과는 밑에 부분처럼 나오게 된다.
 
 

따라서 값자체를 비교할때는 equlas()를 사용해야 한다.
메모리 주소도 같은지 확인하기 위해서는 == 을 사용한다.

댓글 없음:

댓글 쓰기