본문 바로가기
Study Note/Java

JAVA_ Test133_ StringBuffer 클래스 / 버퍼 크기 조절

by 시뮝 2018. 6. 16.
728x90


Test133  StringBuffer 클래스 / 버퍼 크기 조절

※ StringBuffer 클래스는

   문자열을 처리하는 클래스로 String 클래스와의 차이점은

   String 클래스는 내부 문자열 데이터의 수정이 불가능하지만

   StringBuffer 클래스는 문자열을 사용할 때 내부 문자열을 실행 단계에서 변경할 수 있다.


   즉, StringBuffer 객체는 가변적인 길이를 가지므로 객체를 생성하는 시점에서 미리 그 크기나 값을 지정하거나

   실행 시점에 버퍼 크기를 바꿀 수 있는 기능을 제공하는 것이다.


   또한 JDK 1.5 이후부터는 문자열을 처리하는 StringBuilder 라는 클래스도 제공한다.

   StringBuilder 클래스의 기능은 StringBuffer 클래스와 동일하지만

   가장 큰 차이점은 multi-thread unsafe(안전하지 않은 멀티 스레드) 라는 점이다.

   즉, Syncronization(동기화) 이 없기 때문에 ---★

   StringBuffer 보다 빠르며 동시성(동기화) 문제가 없다면

   StringBuilder 를 사용하는 것이 성능을 향상시킬 수 있다.


Test133.java

public class Test133

{

public static void main(String[] args)

{

StringBuffer sb1 = new StringBuffer("korea");

StringBuffer sb2 = new StringBuffer("korea");


System.out.println(sb1.hashCode());

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

System.out.println(sb1 == sb2); //--==>> false

System.out.println(sb1.toString().equals(sb2.toString())); //--==>> true


/*혼자연구 → 값은 같으나 주소값이 다름을 확인

System.out.println(sb1.toString()); //--==>> korea

System.out.println(sb1.hashCode()); //--==>> 1829164700

System.out.println(sb2.toString()); //--==>> korea

System.out.println(sb2.hashCode()); //--==>> 2018699554

*/


StringBuffer sb3 = new StringBuffer();

//-- StringBuffer 기본 생성자 호출 시(인스턴스 생성 과정)

//   기본적으로 생성되는 버퍼 크기는 『16』


System.out.println("버퍼 크기 : " + sb3.capacity());

//--==>> 버퍼 크기 : 16 ---★


System.out.println(sb3);

//--==>> (공백조차 없다)


sb3.append("seoul"); //append()는 붙여넣는것 // 『sb3 += "seoul"』

System.out.println(sb3);

//--==>> seoul

sb3.append("korea");

sb3.append("우리나라");

sb3.append("대한민국");

System.out.println(sb3);

//--==>> seoulkorea우리나라대한민국


System.out.println("버퍼 크기 : " + sb3.capacity());

//--==>> 버퍼 크기 : 34 ---★


///////////////////////////////////////////////////////////////////////


String temp1 = "java and oracle";

System.out.println(temp1.toUpperCase());

//--==>> JAVA AND ORACLE


String temp2 = "JAVA AND ORACLE";

System.out.println(temp2.toLowerCase()); //-- .toLowerCase()는 String클래스엔 정의되어 있다는걸 확인

//--==>> java and oracle


//System.out.println(sb3.toUpperCase());

//System.out.println(sb3.toLowerCase()); //-- .toLowerCase()는 StringBuffer클래스엔 정의되어 있지 않다는걸 확인

//--==>> 에러 발생


String temp3 = sb3.toString(); //-- StringBufferdml 

System.out.println(temp3.toUpperCase());

//--==>> SEOULKOREA우리나라대한민국


// ○ 대상 문자열(sb3) 중 seoul 문자열 앞에

//    『한국』이라는 문자열 추가

sb3.insert(0, "한국"); //-- .insert(들어갈 위치, 들어갈 문자열)

System.out.println("seoul 앞에 『한국』 추가 : " + sb3.toString());

//--==>> seoul 앞에 『한국』 추가 : 한국seoulkorea우리나라대한민국


// ○ 대상 문자열(sb3) 중 korea 문자열 뒤에

//    『사랑』이라는 문자열 추가

//    단, 대상 문자열의 인덱스를 확인하지 말고..


//sb3.insert(12, "사랑");

System.out.println(sb3.indexOf("korea")); //--==>> 7


// test3

sb3.insert(sb3.indexOf("korea")+"korea".length(), "사랑");

System.out.println(sb3);

//--==>> 한국seoulkorea사랑우리나라대한민국


// ○ 『우리나라』 문자열 삭제

//sb3.delete(14, 18);

//--==>> 한국seoulkorea사랑대한민국


sb3.delete(sb3.indexOf("우리나라"), sb3.indexOf("우리나라")+"우리나라".length());

System.out.println(sb3);

//--==>> 한국seoulkorea사랑대한민국


// ○ 대상 문자열(sb3) 에서

//    『korea』 이후 문자열 삭제 (korea 포함)

sb3.delete(sb3.indexOf("korea"), sb3.length());

System.out.println(sb3);

//--==>> 한국seoul


///////////////////////////////////////////////////////////////////////////


// 버퍼 크기 확인

System.out.println("버퍼 크기 : " + sb3.capacity());

//--==>> 버퍼 크기 : 34 ---★


// 문자열의 길이 확인 

System.out.println("문자열의 길이 " + sb3.length());

//--==> 문자열의 길이 7


// 버퍼 크기 조절 → 현재 문자열을 담아둘 수 있는 버퍼의 크기로...

sb3.trimToSize();


// 버퍼 크기 조절 이후 버퍼 크기 확인

System.out.println("버퍼 크기 : " + sb3.capacity());

//--==>> 버퍼 크기 : 7

}

}


cmd

707806938

705265961

false

true

버퍼 크기 : 16


seoul

seoulkorea우리나라대한민국

버퍼 크기 : 34

JAVA AND ORACLE

java and oracle

SEOULKOREA우리나라대한민국

seoul 앞에 『한국』 추가 : 한국seoulkorea우리나라대한민국

7

한국seoulkorea사랑우리나라대한민국

한국seoulkorea사랑대한민국

한국seoul

버퍼 크기 : 34

문자열의 길이 7

버퍼 크기 : 7

계속하려면 아무 키나 누르십시오 . . .







728x90

댓글