2016-03-31

13. java - String 클래스

String 클래스

 - String 인스턴스 생성시 " " 만으로도 생성 가능         
ex)
String str = "Hello";










 - String 인스턴스는 상수 형태 = 데이터 변경이 불가
    why?
    : 같은 문자열일 경우 공유가 되므로 어느 한 쪽이 마음대로 데이터를 변경한다면 문제가 발생하기 때문 

 -문자열이 동일할 경우 하나의 String 인스턴스만 생성 후 그것을 공유
    why?  
    : 인스턴스의 생성은 시스템에 부담을 줌, 문자열을 표현할 때 마다 인스턴스가 생성된다면 부담증가 
       생성횟수를 최소화 하기위해 같은 문자열은 공유
  
 ex)
String str1 = "Hello";
String str2 = "Hello";
















* API 문서를 잘 참고하는게 중요! 


* 유용한 메소드

1) 문자열 길이 반환(+ 공백포함)
    : public int length() 
ex)
String str = "Hello";
System.out.println(str.length()); //5출력

    

2) 두 문자열 결합
    : public String concat(String str)
 ex)
String str1 = "Hello";
String str2 = "World!";
System.out.println(str1.concat(str2)); //HelloWorld! 출력



3) 두 문자열 비교
    : public int compareTo(String str)
    * 반환 값에 따라 
          0 : 두 문자열은 동일
      음수 : 메소드를 호출한 String 인스턴스의 사전상 순서가 앞서있다
      양수 : 전달된 String 인스턴스의 사전상 순서가 앞서있다
 ex)
String str1 = "Hello";
String str2 = "World!";
System.out.println(str1.compareTo(str2)); //-15 출력



* 문자열 복사
ex) 
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String(str1);
        
if(str1==str2)
    System.out.println("같다");
else
    System.out.println("다르다");
        
if(str1==str3)
    System.out.println("같다");
else
    System.out.println("다르다");


  
  -> 세개의 String 인스턴스의 데이터 값이 모두 같으니 하나의 공간을 공유할 것 같지만 아님!


 - str1 의 데이터가 복사되어  별도의 String 인스턴스가 생성됨!


















댓글 없음 :

댓글 쓰기