String 클래스의 인스턴스는 한 번 생성되면 그 값을
읽기만 할 수 있고, 변경 할 수 없다.
예를 들어 String 길이를 늘리고 싶을 때는
"오늘"+"참"+"좋다"
이런식으로 덧셈 연산자를 이용하여 길이를 늘림
하지만 문자열을 결합하면 결합할 수록 공간의 낭비뿐만 아니라
속도도 매우 느려지게 된다.
이러한 단점을 보완한것이 stringBuffer!
이 인스턴스를 사용하면 자유롭게 문자열을 추가할 수 있으며
공간의 낭비도 없고 속도도 빨라진다.
참고로 String 클래스 처럼 인스턴스가 한 번 생생되어 값을 변경
할 수 없는 클래스를 불변 클래스 (immutable class)라고 하며,
StringBuffer 클래스와 같이 자유롭게 인스턴스 값을 변경할 수
있는 클래스를 가변 클래스(mutable class)라고 한다.
하나의 객체에 접근하면서 각각의 객체가 서로 영향을
주어서는 안되는 경우에 불변 인스턴스를 사용함 ..
이제 StringBuffer 메소드를 알아보자
1.append()
문자 추가
public class StringbufferPractice {
public static void main(String[] args){
StringBuffer str = new StringBuffer("java");
System.out.println("원본 문자열" + str);
System.out.println(str.append("흥"));
System.out.println(str.append("뭐야"));
}
}
->
원본 문자열java
java흥
java흥뭐야
2.capacity()
문자열 갯수 확인
public class StringbufferPractice {
public static void main(String[] args){
StringBuffer str1 = new StringBuffer();
StringBuffer str = new StringBuffer("java");
System.out.println(str1.capacity());
System.out.println(str.capacity());
}
}
->
16 (기본 버퍼칸)
20 (java로 칸을 더 추가함)
3. delete()
특정 문자를 삭제함
public class StringbufferPractice {
public static void main(String[] args){
StringBuffer str = new StringBuffer("javaOracle");
System.out.println(str.capacity());
System.out.println(str.delete(0,4));//index4는 출력 x
////위에서 oracle출력되는데, 여기서 0번째 빠져서 racle출력 됨
System.out.println(str.deleteCharAt(0));
}
}
->
26 ( 16+ 10)
Oracle ( index 4까지 출력안됌
racle
4.insert()
인덱스값으로 버퍼 안에 값을 추가함
public class StringbufferPractice {
public static void main(String[] args){
StringBuffer str = new StringBuffer("javaOracle");
System.out.println(str);
System.out.println(str.insert(0,"z"));
}
}
->javaOracle
zjavaOracle
'Java' 카테고리의 다른 글
자바의 자료구조- Map,HashMap (0) | 2022.01.07 |
---|---|
자바의 자료구조-Set,HashSet 개념 및 사용법 (0) | 2022.01.07 |
인스턴스 변수, 클래스 변수 , static변수 (0) | 2022.01.07 |
Arrays.asList()란 (0) | 2022.01.07 |
두 변수의 값 바꾸기 (swap) (0) | 2022.01.07 |
댓글