JAVA - StringBulider & StringBuffer 클래스
- JAVA
- 2018. 3. 4. 14:53
String 은 변경이 불가능한 문자열의 표현을 위한
Class 이지만, StringBuilder와 String Buffer는 변경이
가능한 문자열의 표현을 위한 Class 들이다.
단 String 인스턴스와 달리 StringBuilder 와 StringBuffer의
인트턴스를 가리켜 문자열이라 하지는 않는다
-StringBuilder
StringBuilder는 문자열의 저장 및 변경을 위한
메모리 공간(버퍼)을 내부에 지니는데,
이 메모리 공간은 크기가 자동으로
조절 된다는 특징이 있다. 그리고 이 클래스에서
가장 중요하게 여겨지는 메소드는 append와 insert인데
아래의 소스로 기능을 소개하겠다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class test { public static void main(String[] args) { StringBuilder strBuff = new StringBuilder("AB"); strBuff.append(25); strBuff.append('Y').append(true); System.out.println(strBuff); strBuff.insert(2, false); strBuff.insert(strBuff.length(), 'Z'); System.out.println(strBuff); } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | package com.jsp.ex; class test2 { private int num; public test2() { num = 0;} public test2 add(int num) { this.num += num; return this; } public void Result() { System.out.println("add result : " + num); } } class test { public static void main(String[] args) { test2 adder = new test2(); adder.add(1).add(3).add(5).Result(); } } | cs |
8line 에서 반환형이 test2이고 11line 에서
this를 반환한다. 이때 this는 인스턴스 자신을
뜻하므로 이 문장은 자기 자신을 참조할 수 있는
참조 값의 반환으로 이어진다.
25line에서 adder.add 메소드의 반환값이
adder이기 때문에 반환되는 참조 값을 통한
메소드의 호출이 가능하다.
StringBuffer 클래스는 Thread-safe하다
StringBuffer 클래스와 StringBuilder 클래스가
제공하는 메소드들은 아래 세 가지가 동일하다
-메소드의 수(생성자 포함)
-메소드의 기능
-메소드의 이름과 매개변수 형
따라서 제일 처음 사용한 소스의
StringBuilder 를 StringBuff로 바꿔도
(클래스의 이름만 바꿔도) 컴파일 및 실행이 된다
그렇다면 이 둘의 차이점은?
StringBuffer는 쓰레드에 안전하지만 StringBuilder는
쓰레드에 안전하지 못하다.
'JAVA' 카테고리의 다른 글
JAVA - Collection<E> 인터페이스를 구현하는 제네릭 클래스 ArrayList 와 LinkedList (0) | 2018.03.04 |
---|---|
JAVA - 컬렉션 프레임워크 (0) | 2018.03.04 |
JAVA - Map<K,V> 인터페이스 구현하는 컬렉션 클래스 (0) | 2018.02.28 |
JAVA - continue & break (0) | 2018.02.11 |
JAVA - 예외처리 (0) | 2018.02.05 |