✨
Java
  • 자바의 역사
  • Ch1
    • Before Start Java
      • History of Java
      • Feature of Java
      • API Documentation
      • Hello World!
      • eclipse shortcut
      • Eclipse IDE
      • GitHub to eclipse
  • Ch2
    • Variable
      • Variable
    • Variable Type
    • Character and String
    • Primitive type and range
    • printf and formatter
    • Scanner
    • Overflow of Int
    • Transition between different variable types
    • Object Array
  • CH3
    • Operator
  • CH4
    • 조건문과 반복문
    • if statement
    • switch
    • Math.random()
    • for statement
    • while statement
    • break, continue, named iterated statement
  • CH5
    • Array
    • 배열 활용
    • String Array
  • OOP
    • Intro
  • Class and Object
  • Make multiple Classes in one file
  • How to use Object
  • Object Array
  • Variable type according to declared location
  • Class Variable and Instance Variable
  • Method
  • Call Stack
  • Parameter
  • Static method(Class method) and Instance method
  • (Method)Overloading
  • Constructor
  • Constructor this()
  • Reference type variable "this"
  • Initialize variable
  • Inheritance
  • Composite
  • Single Inheritance, Object Class
  • (Method)Overriding
  • super, super()
  • package, class path
  • import, static import
  • modifier
  • access modifier
  • Encapsulation
  • Polymorphism
  • reference type transition
  • instanceof operator
  • Parameter polymorphism
  • Multiple object using one array
  • Abstract Class, Abstract Method
  • Creating Abstract Class
  • Interface
  • Interface Polymorphism
  • Interface Pros
  • Default method and static method
  • Inner Class
  • Anonymous Class
  • java.lang package and useful class
    • Object class
    • hashCode(), toString()
    • String class
    • StringBuffer class
    • StringBuilder class
    • Math class
    • Wrapper class
    • Number class
    • String to Number, String to Wrapper class
    • Auto-boxing and (auto)Unboxing
  • Collection Framework
    • Collections framework
    • List, Set, Map Interface
    • List의 removeAll() 과 clear() 비교
    • List Interface - ArrayList
    • How to view Java API source
    • List Interface - LinkedList
    • Stack and Queue
    • Iterator, ListIterator, Enumeration
    • Array
    • Comparator와 Comparable
    • Stack
    • String
    • String + char = String
    • String.toCharArray()
    • BufferedReader / BufferWriter
    • Scanner로 String 입력 - next( )와 nextLine( )
    • 공백없이 2차원배열 데이터 String으로 한번에 한줄씩 입력받기(문자/숫자)
    • 공백을 사이에 두고 빠른 2차원 배열 입출력
    • arr[index++]과 arr[index] index++의 차이
    • int와 long의 차이
    • Untitled
    • 타입 간의 변환
    • Array 와 ArrayList
    • valueOf()
    • Char
    • 변수, 객체 초기화(초기값 설정)
  • error troubleshooting
    • No enclosing instance of type
    • ASCII Code Table
    • java.lang.NumberFormatException
    • No enclosing instance..
  • reference
    • String을 생성하는 2가지 방법과 차이점
    • StackOverflowError(스택, 힙 메모리)
    • swtich-case 반복문
Powered by GitBook
On this page

Was this helpful?

  1. java.lang package and useful class

StringBuffer class

PreviousString classNextStringBuilder class

Last updated 4 years ago

Was this helpful?

String처럼 문자형 배열(char[ ])을 내부적으로 가지고 있다.

그러나 String과 달리 내용을 변경할 수 있다.(mutable)

public final class StringBuffer implements java.io.Serializable {
    private char[] value;
}

append() : 내용을 변경할 수 있다. append()는 지정된 내용을 StringBuffer에 추가한 후, StringBuffer의 참조를 반환한다!

delete() : 삭제

insert() : 삽입

StringBuffer sb = new StringBuffer("abc");
sb.append("123");//abc123
sb.append("ZZ");//abc123ZZ

StringBuffer sb2 = new StringBuffer("abc");
sb.append("123").append("ZZ");//sb.append("123") = sb이다!

배열은 길이 변경불가하기 때문에 StringBuffer는 저장할 문자열의 길이를 고려해서 적절한 크기로 생성해야한다.

공간이 부족하다면:

  1. 새로운 배열 생성

  2. 내용 복사

  3. 참조 변경

public StringBuffer(int length) {
    value = new char[length];
    shared = false;
}
public StringBuffer() {
    this(16);//버퍼의 크기를 지정하지 않으면 버퍼의 크기는 16이 된다.
}
public StringBuffer(String str) {
    this(str.length() + 16);//지정한 문자열의 길이보다 16이 더 크게 버퍼를 생성한다.
    append(str);
}

StringBuffer는 equals()가 오버라이딩되어있지 않다.(주소비교) 그렇기 때문에 toString()을 사용하여 String으로 형변환을 해서 비교한다.

StringBuffer sb = new StringBuffer("abc");
StringBuffer sb2 = new StringBuffer("abc");

System.out.println(sb==sb2);//false
System.out.println(sb.equals(sb2));//false

String s = sb.toString();
String s2 = sb2.toString();

System.out.println(s.equals(s2));
  • StringBuffer의 메서드

Method

Description

Example

StringBuffer()

16문자를 담을 수 있는 버퍼를 가진 StringBuffer 인스턴스를 생성한다. (16은 의미없고, char형 배열을 생성한다고 생각하면 된다.)

StringBuffer sb = new StringBuffer();

StringBuffer(int length)

지정된 개수의 문자를 담을 수 있는 버퍼를 가진 StringBuffer 인스턴스를 생성한다.

StringBuffer sb = new StringBuffer(10);

StringBuffer(String str)

지정된 문자열 값(str)을 갖는 StringBuffer 인스턴스를 생성한다.

sb = "Hi"

StringBuffer append(boolean b)

StringBuffer append(char c)

StringBuffer append(char[ ] str)

StringBuffer append(double d)

StringBuffer append(float f)

StringBuffer append(int i)

StringBuffer append(long l)

StringBuffer append(Object obj)

StringBuffer append(String str)

매개변수로 입력된 값을 문자열로 변환하여 StringBuffer 인스턴스가 저장하고 있는 문자열의 뒤에 덧붙인다.

StringBuffer sb = new StringBuffer("abc");

StringBuffer sb2 = sb.append(true);

sb.append('d').append(10.0f);

StringBuffer sb3 = sb.append("ABC").append(123);

//sb = ?

int capacity()

StringBuffer인스턴스의 버퍼크기를 알려준다. length()는 버퍼에 담긴 문자열의 길이를 알려준다.

StringBuffer sb = new StringBuffer(100);

sb.append("조흔나사랑해");

int bufferSize = sb.capacity();//100

int stringSize = sb.length();//6

char charAt(int index)

지정된 위치(index)에 있는 문자를 반환한다.

StringBuffer sb = new StringBuffer("흔나조");

char c = sb.charAt(2);//조

StringBuffer delete(int start, int end)

시작위치(start)부터 끝 위치(end) 사이에 있는 문자를 제거한다. 단,Java에서는 끝 위치의 문자는 제외.

StringBuffer sb = new StringBuffer("0123456");

StringBuffer sb2 = sb.delete(3,6);//0126

StringBuffer deleteCharAt(int index)

지정된 위치(index)의 문자를 제거한다.

StringBuffer sb = new StringBuffer("0123456");

sb.deleteCharAt(3);//012456

StringBuffer insert(int pos,boolean b)

StringBuffer insert(int pos,char c)

StringBuffer insert(int pos,char[ ] str)

StringBuffer insert(int pos,int i)

StringBuffer insert(int pos,double d)

StringBuffer insert(int pos,float f)

StringBuffer insert(int pos,long l)

StringBuffer insert(int pos,Object obj)

StringBuffer insert(int pos,String str)

append처럼 각종 데이터 타입을 받을 수 있다. 다만, insert는 삽입하는 것이므로 삽입하는 위치(pos)도 필요하다.

두 번째 매개변수로 받은 값을 문자열로 변환하여 지정된 위치(pos)에 추가한다. pos는 0부터 시작.

StringBuffer sb = new StringBuffer("0123456");

sb.insert(4, '.' );//0123.456

int length()

StringBUffer 인스턴스에 저장되어 있는 문자열의 길이를 반환한다.

StringBuffer sb = new StringBuffer("01234");

int length = sb.length();//5

StringBuffer replace(int start, int end, String str)

지정된 범위(start~end)의 문자들을 주어진 문자열로 바꾼다. end위치의 문자는 범위에 포함되지 않는다. (start <= x < end)

StringBuffer sb = new StringBuffer("0123456");

sb.replace(3,6,"AB");//012AB6

StringBuffer reverse()

StringBuffer 인스턴스에 저장되어 있는 문자열의 순서를 거꾸로 나열한다.

StringBuffer sb = new StringBuffer("01234");//43210

void setCharAt(int index, char ch)

지정된 위치(index)의 문자를 주어진 문자(ch)로 바꾼다.

StringBuffer sb = new StringBuffer("01234");

sb.setCharAt(4,'흔');//0123흔

void setLength(int newLength)

지정된 길이로 문자열의 길이를 변경한다. 길이를 늘리는 경우에 나머지 빈 공간을 null문자 '\u000'로 채운다.

StringBuffer sb = new StringBuffer("0123456");

sb.setLength(5);//"01234"

StringBuffer sb2 = new StringBuffer("0123456");

sb2.setLength(10);//"0123456 " //양쪽 공백문자 제거

String str = sb2.toString().trim();//"0123456"

String toString()

StringBuffer 인스턴스의 문자열을 String으로 반환.

StringBuffer sb = new StringBuffer("01234");

String str = sb.toString();//"01234"

String substring(int start)

String substring(int start, int end)

말 그대로 substring을 뽑아낸다.

지정된 범위 내의 문자열을 String으로 뽑아서 반환한다. 시작위치(start)만 지정하면 시작위치부터 문자열 끝까지 뽑아서 반환한다.

StringBuffer sb = new StringBuffer("0123456");

String str = sb.substring(3);//"3456" String str2 = sb.substring(3,5);//"34"