StringBuilder와 StringBuffer는 무슨 차이
입니다!String, StringBuffer, StringBuilder
를 하나씩 풀어나가며 이번 과제를 진행하겠습니당당당!!immutable object
는 생성 후 그 상태를 바꿀 수 없는 객체String, Integer, Boolean
과 같은 Class
도 있지만, 사용자가 직접 final로 원시타입을 생성하여 불변 객체를 만들 수 있습니다! public class Person {
private final String name;
private final int age;
public Person(String name, int age){
this.name = name;
this.age = age;
}
}
mutable object
는 생성 후에도 상태를 변경할 수 있는 개체int, char, boolean
등 원시타입 필드를 가진 클래스는 가변 객체입니다!final
을 붙여서 불변 객체로 만들 수도 있습니다. public class Person {
private String name;
private int age;
public Person(String name, int age){
this.name = name;
this.age = age;
}
}
처음 알고리즘 문제를 풀었을 때, 항상 String을 사용했던 것 같습니다! 그런데 어느 순간부터 String을 사용한 연산을 하면, 메모리를 너무 많이 잡아먹어 문제를 해결하지 못했던 것 같아요..ㅜㅜㅜ
String
은 무엇인가?String
은 원시 타입이 아닙니다!String
은 불변 객체입니다!String
을 생성하는 방법!String index = new String("예시");
String index = "예시";
String
이 제공하는 Methodequals
indexOf
replaceAll
substring
toUpperCase
결국, 불변객체를 사용해야 하는 경우 String을 사용하는 것은 좋지만, 값이 계속 바뀌는 상황일 경우에는 지양하는 것이 좋다!
처음 무작정 코딩테스트를 위해
StringBuffer
를 사용했던 경험이 있습니다. 면접때 면접관님이StringBuffer
를 사용한 이유와StringBuilder
와의 차이점을 물으셨지만.. 결국 완벽한 답을 하지 못한 경험이 있습니다.
String
과 다르게 StringBuffer
는 가변 객체입니다!StringBuffer
는 동기화 Synchronized
를 지원합니다!StringBuffer
는 멀티스레드 환경에 쓰입니다!StringBuilder
가 더 효율적입니다.알고리즘 문제를 풀때,
StringBuffer
보다StringBuilder
가 더 빠르다는 말을 들었습니다. 혹해서 아직까지 StringBuilder를 가끔 사용하고 있는 것 같습니다. 이번 기회에StringBuilder
를 탐구하겠습니당!!
StringBuilder
도 StringBuffer
와 마찬가지로 가변 객체입니다!StringBuffer
보다 단일 스레드 환경에서 빠른 속도를 보여주기 때문입니다!String은 불변 객체이고, StringBuffer와 StringBuilder는 가변 객체이다
단일 스레드 환경에서 StringBuilder는 제일 좋은 성능을 발휘한다.
StringBuffer는 Synchronized를 지원하지만, StringBuilder는 지원하지 않는다.
StringBuffer는 멀티 스레드 환경에서 안정성 보장한다.
상황에 맞추어 StringBuffer와 StringBuilder를 사용해야 하며, 무엇이 좋은지는 그 상환이 판단한다.
간혹, String이 StringBuffer와 StringBuilder보다 좋은 성능을 보일 떄 도 있다!