문자열과 기본형 간의 변환

 

숫자   =>  문자열 변환

int i = 100;

String str1 = i + " ";   // 100을 "100"으로 변환하는 방법1

String str2 = String.valueOf(i)   // 100을 "100"으로 변환하는 방법2

성능은 valueOf()가 더 좋지만 편하기 때문에  + " " 을  자주사용한다. 

 

 

문자열  => 숫자

int i = Integer.parseInt("100");   // "100"을 100으로 변환하는 방법1

int i2 = Integer.valueOf("100");   /  "100"을 100으로 변환하는 방법2

 

 

StringBuffer클래스

String클래스는 인스턴스를 생성할 때 지정된 문자열을 변경할 수 없지만 StringBuffer클래스는 변경이 가능하다.

내부적으로 문자열 편집을 위한 버퍼를 가지고 있으며, 인스턴스를 생성할 때 그 크기를 지정할 수 있다.

 

 

StringBuffer의 생성자

StringBuffer클래스의 인스턴스를 생성할 때, 적절한 길이의 char형 배열이 생성되고, 

이 배열은 문자열을 저장하고 편집하기 위한 공간(버퍼)이다. 버퍼의 크기를 지정해주지 않으면 16이 된다.

 

 

StringBuffer의 변경

String과 달리 StringBuffer는 내용을 변경 할 수 있다.


StringBuffer sb = new StringBuffer("abc");  // sb주소가 0x100 이라고 가정.
sb.append("123");	//sb의 내용 뒤에 "123"을 추가한다
StringBuffer sb2 = sb.append("ZZ"); 
//sb에 새로운 문자열이 추가되고 sb자신의 주소를 반환하여 sb2에는 sb의 주소가 저장된다.

System.out.println(sb);
System.out.println(sb2);

----------------------------------------------------------------------------------------
결과
abc123zz
abc123zz
----------------------------------------------------------------------------------------
=> append()는 반환타입이 StringBuffer이라 자신의 주소를 반환하므로
   sb2에는 sb의 주소인 0x100이 저장된다

 

 

StringBuffer의 비교

StringBuffer sb = new StringBuffer("abc");  
StringBuffer sb2 = new StringBuffer("abc"); 
		
System.out.println(sb==sb2);          //false
System.out.println(sb.equals(sb2));   //false
//StringBuffer은 equals를 오버라이딩 하지 않아서 false이다.
		
String s = sb.toString();	//StringBuffer을 String으로 변환
String s2 = sb2.toString();
		
System.out.println(s.contentEquals(s2));   //true