Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 데이터베이스
- postgresql
- 시큐리티
- springboot
- python
- DB
- JPA
- Oracle
- backjoon
- spring
- Spring Security
- Java
- 자바스크립트
- Flutter
- 자료구조
- 리눅스
- 스프링 부트 쇼핑몰 프로젝트 with JPA
- 네트워크
- baekjoon
- 백준
- 파이썬
- 플러터
- CS
- 프로그래머스
- 스프링
- 자바
- CS지식
- javascript
- 스프링부트
- 데이터
Archives
- Today
- Total
Jin's Dev Story
[JAVA] StringBuffer & StringBuilder 특징 본문
공통점
new 연산으로 클래스를 한 번만 만듦
문자열 연산 시 새로 객체를 만들지 않고 크기를 변경함
메서드가 동일
가변성을 가짐
코드
String str = "strA"; StringBuilder sbd = new StringBuilder(); StringBuffer sbf = new StringBuffer(); sbd.append("sbdA"); sbf.append("sbfA"); System.out.println("String 객체의 주소 : "+str.hashCode()); System.out.println("StringBuilder 객체의 주소 : "+sbd.hashCode()); System.out.println("StringBuffer 객체의 주소 : "+sbf.hashCode()); str += "strB"; sbd.append("sbdB"); sbf.append("sbfB"); System.out.println("============================="); System.out.println("String 객체의 주소 : "+str.hashCode()); System.out.println("StringBuilder 객체의 주소 : "+sbd.hashCode()); System.out.println("StringBuffer 객체의 주소 : "+sbf.hashCode()); //String 객체의 주소 : 3541040 //StringBuilder 객체의 주소 : 1468177767 //StringBuffer 객체의 주소 : 434091818 //============================= //String 객체의 주소 : 1758230625 //StringBuilder 객체의 주소 : 1468177767 //StringBuffer 객체의 주소 : 434091818
차이점
- StringBuffer는 Thread-Safe함
- StringBuilder는 Thread-safe하지 않음 (불가능)
StringBuffer 클래스
- 문자열 연산이 많은 Multi-Thread 환경
- 멀티 스레드 환경에서의 동기화를 지원하지만 이런 구현은 로직을 의심해야 함
- 속도 느림
StringBuilder 클래스
- 문자열 연산이 많은 Single-Thread 또는 Thread 신경 안쓰는 환경
- 동기화를 지원하지 않아 싱글 스레드에서 속도가 빠릅니다.
'Programming Language > JAVA' 카테고리의 다른 글
[JAVA] 직렬화 & 역직렬화 (0) | 2024.06.12 |
---|---|
[JAVA] 정적 & 동적 (1) | 2023.10.20 |
[JAVA] 디자인패턴 (1) | 2023.10.20 |
[JAVA] 절차 지향 프로그래밍 (0) | 2023.10.20 |
[JAVA] 최대공약수, 최소공배수 (0) | 2023.10.20 |