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보다 좋은 성능을 보일 떄 도 있다!