2011. 6. 18. 05:54

자바(Java)의 String 변수와 객체, StringBuffer

String <변수명> ; 으로 선언하는 것과 String <변수명> = new String() ; 으로 같은 문자열을 선언하는 것에 어떤 차이가 있는지 알아보기 위해  hashCode()를 이용해 보면 메모리 주소값이 같다는 것을 알 수 있다. 하지만 StringBuilder나 StringBuffer는 같은 문자열을 선언하더라도 인스턴스를 생성할 때마다 별개로 처리한다.

  1: public class StringHashCodeTest {
  2:  public static void main(String[] args)  {
  3:   System.out.println("String 변수") ;
  4:   String str1 = "자바 커피" ;
  5:   System.out.println("str1 HashCode : " + str1.hashCode()) ;
  6:   String str2 = "자바 커피" ;
  7:   System.out.println("str2 HashCode : " + str2.hashCode()) ;
  8:   String str3 = "자바 커피" ;
  9:   System.out.println("str3 HashCode : " + str3.hashCode()) ;
 10: 
 11:   System.out.println() ;
 12:   
 13:   System.out.println("String 객체") ;
 14:   String str4 = new String("자바 커피") ;
 15:   System.out.println("str4 HashCode : " + str4.hashCode()) ;
 16:   String str5 = new String("자바 커피") ;
 17:   System.out.println("str5 HashCode : " + str5.hashCode()) ;
 18:   String str6 = new String("자바 커피") ;
 19:   System.out.println("str6 HashCode : " + str6.hashCode()) ;
 20: 
 21:   System.out.println() ;
 22: 
 23:   System.out.println("동일한 문자열의 String 변수와 객체") ;
 24:   String str7 = "오렌지 주스" ;
 25:   System.out.println("str7 HashCode : " + str7.hashCode()) ;
 26:   String str8 = new String("오렌지 주스") ;
 27:   System.out.println("str8 HashCode : " + str8.hashCode()) ;
 28: 
 29:   System.out.println() ;
 30: 
 31:   System.out.println("StringBuilder") ;
 32:   StringBuilder str9 = new StringBuilder("키위딸기 주스") ;
 33:   System.out.println("str9 HashCode : " + str9.hashCode()) ;
 34:   StringBuilder str10 = new StringBuilder("키위딸기 주스") ;
 35:   System.out.println("str10 HashCode : " + str10.hashCode()) ;
 36: 
 37:   System.out.println() ;
 38: 
 39:   System.out.println("StringBuffer") ;
 40:   StringBuffer str11 = new StringBuffer("바나나 스무디") ;
 41:   System.out.println("str9 HashCode : " + str11.hashCode()) ;
 42:   StringBuffer str12 = new StringBuffer("바나나 스무디") ;
 43:   System.out.println("str10 HashCode : " + str12.hashCode()) ;
 44:  }
 45: }