본문 바로가기
JAVA

[JAVA] String, StringBuffer, StringBuilder

by diaryDev 2024. 7. 22.
728x90

String

1. 불변(immutable)

2. 문자열 추가, 수정, 삭제가 적을 경우 사용

3. 문자열 데이터 동등 비교시, equals() 사용 

String s1 = "Hello";             // 문자열 리터럴을 이용한 방식
String s2 = new String("Hello"); // new 연산자를 이용한 방식
 
// 리터럴과 객체 문자열 비교
System.out.println(s1 == s2);      // false
System.out.println(s2.equals(s1)); // true

 

StringBuffer / StringBuilder

1. 가변(mutable)

2. 문자열 추가, 수정, 삭제가 빈번할 경우 사용

3. 문자열 데이터 동등 비교시, String 객체로 변환 후, equals() 사용

StringBuffer sb1 = new StringBuffer("hello");
StringBuffer sb2 = new StringBuffer("hello");

System.out.println(sb1 == sb2);      // false
System.out.println(sb2.equals(sb1)); // false

String sb1 = sb1.toString();
String sb2 = sb2.toString();
System.out.println(sb_tmp.equals(sb2_tmp)); // true

 

StringBuffer는 각 메서드 별로 synchronized가 존재하여 멀티스레드 환경에서도 동기화를 지원한다.

하지만 StringBuilder동기화를 보장하지 않는다.

StringBuilder문자열 파싱 성능이 우수하다.

 

  String StringBuffer StringBuilder
가변 여부 불변 가변 가변
스레드 세이프 O O X
연산 속도 느림 빠름 아주 빠름
사용 시점 문자열 추가 연산이 적고,
스레드 세이프 환경에서  
문자열 추가 연산이 많고,
스레드 세이프 환경에서  
문자열 추가 연산이 많고,
빠른 연산이 필요한 경우
단일 스레드 환경일 경우

 


 

참고

https://inpa.tistory.com/entry/JAVA-%E2%98%95-String-StringBuffer-StringBuilder-%EC%B0%A8%EC%9D%B4%EC%A0%90-%EC%84%B1%EB%8A%A5-%EB%B9%84%EA%B5%90

 

728x90

'JAVA' 카테고리의 다른 글

[JAVA] 인수(Argument), 매개변수(Parameter)  (0) 2024.09.27
[JAVA] 시간 함수(년월일시)  (0) 2024.08.19