[Java] String vs StringBuilder vs StringBuffer
by Choi HyeSun
String
String a = "sun";
String b = new String("ny");
String a = a + b; // 객체가 하나 더 생김
System.out.println(a); // sunny
StringBuilder
StringBuilder sb = new StringBuilder();
sb.append("sun"); // 객체가 수정됨
sb.append("ny");
System.out.println(sb.toString()); // sunny
sb.delete(0, sb.length()); // 객체 초기화1
sb.setLength(0); // 객체 초기화2
StringBuffer
StringBuffer sb = new StringBuffer();
sb.append("sun"); // 수정
sb.append("ny");
System.out.println(sb.toString());
sb.delete(0, sb.length()); // 객체 초기화1
sb.setLength(0); // 객체 초기화2
String vs StringBuilder vs StringBuffer
String | StringBuilder | StringBuffer | |
---|---|---|---|
객체 | 불변객체 (수정시 객체가 새로 생성) |
변경 가능 | 변경 가능 |
쓰레드 | 단일 쓰레드 | 멀티 쓰레드 | |
성능 | StringBuffer보다 ↑ | StringBuilder보다 ↓ | |
추천순위 | 3 | 1 | 2 |
-
문자열 연산이 기하급수적으로 많고 단일 쓰레드인 경우 : StringBuilder 추천
-
문자열 연산이 많지만 단일 쓰레드인지 확실하지 않은 경우 : StringBuffer 추천
-
문자열 연산이 많지 않고 테스트 코드 등으로 사용하는 경우 : 무관
-
java 1.5부터는 String + 연산도 StringBuilder로 구현되어 있음
- 하지만 String 클래스의 객체 생성부분이 동일하기 때문에 StringBuilder 권장
Subscribe via RSS