일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 브라우저
- request
- mst
- 그리디
- DP
- jsp
- 해시
- Prim's Algorithm
- 부스트코스
- 웹프로그래밍
- BJ
- 프림 알고리즘
- 소수
- 크루스칼 알고리즘
- 네이버 부스트캠프 ai tech
- Kruskal's Algorithm
- dbms
- mysql
- 다이나믹 프로그래밍
- 정렬
- 정렬 알고리즘
- 백준
- SERVLET
- programmers
- 웹서버
- 프로그래머스
- 웹 프로그래밍
- 벡엔드
- 순열 알고리즘
- greedy
- Today
- Total
끵뀐꿩긘의 여러가지
Java - StringBuilder/StringBuffer 클래스, 메서드 본문
<String의 한계>
String은 불변(immutable)하기 때문에 값을 변경할 수 없다.
그러므로, .concat이나 +연산을 할 때 기존의 값을 버리고 새로 값을 할당하는 과정을 거친다.
이러한 과정이 반복적으로 일어나면, 속도저하가 심각해진다.
String str = new String("hello"); // String 참조변소 str이 "hello"라는 메모리 영역을 가리킴
str = str + " world";
//String 참조변수 str이 "hello world"라는 새로 생긴 메모리 영역을 가리키도록 바뀜
//"hello"가 저장된 메모리 영역은 그대로 있다가 Garbage Collection에 의해 삭제됨
String 클래스는 불변하기 때문에 문자열을 수정하는 시점에 새로운 String 인스턴스가 생성된 것이다.
=> 문자열 추가, 수정, 삭제가 빈번하게 일어날 수록 String 클래스는 좋은 성능을 발휘하지 못한다.
<가변(mutable)성 클래스 : StringBuffer, StringBuilder>
StringBuffer sb= new StringBuffer("hello"); //StringBuffer 변수 sb가 "hello"라는 메모리 영역을 가리킴
sb.append(" world"); // "hello"라는 메모리 영역이 "hello world"로 바뀌고, sb는 같은 메모리 영역을 가리키고 있음
StringBuffer, StringBuilder는 가변성 클래스 이므로, 동일 객체 내에서 문자열을 변경하는것이 가능하다
=> 문자열 추가, 수정, 삭제가 빈번하게 일어날때, StringBuffer, StringBuilder 클래스를 사용하여야한다.
<StringBuffer와 StringBuilder의 차이>
StringBuffer와 StringBuilder는 동일한 API를 가지고 있지만, StringBuffer는 동기화를 지원하므로, 멀티스레드 환경에서주로 사용한다.
StringBuilder는 동기화를 지원하지 않기 때문에 멀티스레드에서는 적합하지 않지만, 단일쓰레드에서 Stringbuffer보다 더 뛰어난 성능을 나타낸다.
<StringBuffer/ StringBuilder의 메서드>
java.lang.StringBuilder (문자열) 주요 메소드 [1/2]
java.lang.StringBuilder (문자열) 주요 메소드 [1/2]
StringBuilder와 StringBuffer 클래스도 String 클래스와 같이 문자열을 다루는 클래스입니다. 다만, String 클래스가 문자열을 생성자로 넣어 인스턴스를 한 번 생성하고 나면 인스턴스가 가진 문자열 값
codevang.tistory.com
java.lang.StringBuilder (문자열) 주요 메소드 [2/2]
java.lang.StringBuilder (문자열) 주요 메소드 [2/2]
[ reverse() ] 문자열을 거꾸로 뒤집어줌 package study.first; public class Study { public static void main(String[] args) { StringBuilder a = new StringBuilder("Hello World"); a.reverse(); System.out...
codevang.tistory.com
'JAVA > 자료구조-알고리즘&함수 정리' 카테고리의 다른 글
Java - 해시(hash)(2/2) (0) | 2021.05.01 |
---|---|
Java - 해시(hash)(1/2) (0) | 2021.05.01 |
Java - 순열 조합 알고리즘 (0) | 2021.04.29 |
Java - 소수 찾기 (0) | 2021.04.28 |
Java - HashSet 클래스 (0) | 2021.04.27 |