본문 바로가기

Knowledge Wiki/Java

JAVA 문자열, String, StringBuffer, StringBuilder

1. 문자열을 초기화할때는 되도록 빈 문자열로 초기화하자. 굳이 객체 새로 만들지 말고.

String str = new String(""); // 이거 쓰지 말고
String str = ""; // 이거 쓰자


2. String클래스의 valueOf() 함수는 기본형 변수값을 문자열로 바꿔준다.
    참조형 변수의 경우 참조형 인스턴스의 toString()함수를 호출한다.

3. String클래스의 join()함수는 문자열을 합칠 때 유용하다.

String animals = "dog,cat,bear";
String[] arr = animals.split(",");
String str = String.join("-", arr); // "dog-cat-bear"


4. StringBuffer클래스는 문자열을 저장 & 다루기 위한 함수이다.
    String과 달리 내용을 변경할 수 있다.
    문자열을 char 배열형의 멤버 변수로 가지고 있다.
    배열은 한번 만들면 길이 변경이 불가하기 때문에 공간이 부족하면 새로운 배열을 만든다.

    보통 직전 배열 길이의 2배 길이로.
    그리고 새로 만든 배열로 기존 배열의 내용을 복사한다.

5. StringBuffer클래스는 String클래스와 달리 equals()가 오버라이딩되어있지 않다.
    즉, Object의 주소비교이기 때문에 내용이 같아도 equals()가 false로 나올 수 있다.
    그래서 StringBuffer클래스간 내용비교는 StringBuffer클래스의 toString()클래스를 호출해서 비교해야 한다.

6. StringBuffer클래스를 생성할 땐 적절한 length를 지정해주어야 

     불필요한 배열 생성 & 복사가 많이 일어나지 않는다.

7. StringBuilder 클래스는 StringBuffer클래스와 거의 비슷하다.
    단 하나의 차이점은 StringBuffer클래스가 동기화되어 있는 반면 

    StringBuilder클래스는 동기화가 되어있지 않다.
    즉, StringBuffer클래스는 멀티 쓰레드에 안전(thread-safe)하지만 StringBuilder는 그렇지 않다.

'Knowledge Wiki > Java' 카테고리의 다른 글

JAVA Math 클래스 round(), rint()  (0) 2021.11.30
JAVA 문자열 클래스의 동기화  (0) 2021.11.30
JAVA Object 클래스  (0) 2021.11.30
JAVA equals(), hashCode()  (0) 2021.11.30
JAVA native 메서드  (0) 2021.11.30