hyeonga_code
Java_60_API_스트링 버퍼, 스트링 빌더_StringBuffer, String Builder 본문
- StringBuffer
- 기존 객체의 공간이 부족한 경우 기존 버퍼 크기를 늘려 저장합니다.
- 각 메서드별로 멀티스레드 환경에서도 동기화를 지원
- 스레드에 안전한 프로그램이 필요할 때 사용합니다.
- 개발중인 시스템의 부분이 스레드에 안전한지 모를 경우 사용합니다.
- 16개를 저장할 수 있습니다.
StirngBuffer(CharSequence "abc") : abc를 제외한 16개 문자 저장 가능
- 문자형 배열을 내부적으로 가지고 있습니다. = String
- 내용을 변경할 수 있습니다._mutable != String
- thread-safe를 지원합니다.
- 동시에 수정하는 경우 안전성을 보장합니다.
- 순차적으로 처리할 수 있습니다.
- 인스턴스를 생성할 때 버퍼의 크기를 충분히 지정해야 합니다.
- equals()를 오버라이딩하지 않습니다.
- StringBuilder
- 단일 스레드 환경
- 동기화를 지원하지 앖습니다.
- 스레드에 안전한지 여부가 관계 없는 프로그램을 개발할 때 사용합니다.
- thread-safe를 지원하지 않습니다.
- 속도가 빠릅니다.
- default 값으로 적용됩니다.
- 내부에서 처리할 수 있습니다.
- 장문을 저장할 경우 명시적으로 선언하는 것을 권장합니다.
=====
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
package adv.baseclass;
public class StringEx {
public static void main(String[] args) {
// 문자열 비교
String word1 = "Java";
String word2 = new String("Java");
System.out.println("word1 == word2 : " + (word1==word2));
System.out.println("word1.equals(word2) : " + word1.equals(word2));
/*
word1 == word2 : false
- String 값의 주소를 비교합니다.
word1.equals(word2) : true
- String 값을 비교합니다.
*/
// 문자열 연산
String word3 = " Word";
System.out.println("word1 + word3 : " + (word1 + word3));
System.out.println("word2 + word3 : " + (word2 + word3));
/*
word1 + word3 : Java Word
- String Pool에 등록되어 Java, Word, Java Word 단어가 등록됩니다.
word2 + word3 : Java Word
- Heap 공간에 저장되어 있는 값이 Java Word로 수정됩니다.
- 문자열 연산에는 메모리를 고려해야 합니다.
- Heap 공간에 바로 작성하기 위해 String bupffer를 사용합니다.
*/
// StringBuilder :
StringBuilder sb = new StringBuilder("Java");
// new 연산자를 반드시 작성합니다.
sb.append("String");
System.out.println("sb.toString() : " + sb.toString());
/*
sb.toString() : JavaString
- sb.append('추가할 문자열')
- 기존의 sb 주소에 접근하여 기본 문자열 뒤에 문자열을 추가합니다.
*/
// StringBuffer : 스레드 세이프를 지원합니다.
StringBuffer sbf = new StringBuffer("Java");
// new 연산자를 반드시 작성합니다.
sbf.append("String");
System.out.println("sb.toString() : " + sbf.toString());
/*
sbf.toString() : JavaString
- sbf.append('추가할 문자열')
- 기존의 sbf 주소에 접근하여 기본 문자열 뒤에 문자열을 추가합니다.
*/
}
}
|
- 주요 메소드
=====
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
package adv.baseclass;
public class StringEx {
public static void main(String[] args) {
// 문자열 비교
String word1 = "Java";
String word2 = new String("Java");
System.out.println("word1 == word2 : " + (word1==word2));
System.out.println("word1.equals(word2) : " + word1.equals(word2));
/*
word1 == word2 : false
- String 값의 주소를 비교합니다.
word1.equals(word2) : true
- String 값을 비교합니다.
*/
// 문자열 연산
String word3 = " Word";
System.out.println("word1 + word3 : " + (word1 + word3));
System.out.println("word2 + word3 : " + (word2 + word3));
/*
word1 + word3 : Java Word
- String Pool에 등록되어 Java, Word, Java Word 단어가 등록됩니다.
word2 + word3 : Java Word
- Heap 공간에 저장되어 있는 값이 Java Word로 수정됩니다.
- 문자열 연산에는 메모리를 고려해야 합니다.
- Heap 공간에 바로 작성하기 위해 String bupffer를 사용합니다.
*/
// StringBuilder :
StringBuilder sb = new StringBuilder("Java");
// new 연산자를 반드시 작성합니다.
sb.append("String");
System.out.println("sb.toString() : " + sb.toString());
/*
sb.toString() : JavaString
- sb.append('추가할 문자열')
- 기존의 sb 주소에 접근하여 기본 문자열 뒤에 문자열을 추가합니다.
*/
// StringBuffer : 스레드 세이프를 지원합니다.
StringBuffer sbf = new StringBuffer("Java");
// new 연산자를 반드시 작성합니다.
sbf.append("String");
System.out.println("sb.toString() : " + sbf.toString());
/*
sbf.toString() : JavaString
- sbf.append('추가할 문자열')
- 기존의 sbf 주소에 접근하여 기본 문자열 뒤에 문자열을 추가합니다.
*/
// 주요 메소드
String str = "abcd1234";
System.out.println(str.length());
System.out.println(str.charAt(2));
System.out.println(str.substring(1,3));
System.out.println(str.replaceAll("d", "e"));
/*
8
c : str[2]부터 출력합니다.
bc : 1 부터 (3-1)까지 출력합니다.
abce1234 : 일치하는 문자를 변경합니다.
*/
String str1 = "A, B, C, D";
String[] strs = str1.split(","); // ","로 구분하여 저장합니다.
for(String s : strs) {
System.out.print(s);
}
System.out.println();
/* A B C D */
for(String s : strs) {
System.out.print(s.trim()); // 띄어쓰기를 제거합니다.
}
/* ABCD */
}
}
|
'Java' 카테고리의 다른 글
Java_62_Calendar 클래스, 날짜 클래스 (0) | 2023.10.25 |
---|---|
Java_61_Math 클래스, Math.random(), 업다운 게임 (0) | 2023.10.25 |
Java_59_API_스레드_생명 주기, 멀티 스레드, 메소드, 스레드 종류, 스케줄링 방식, 스레드 스케줄러, 동기화 (0) | 2023.10.24 |
Java_58_API_lang 패키지, Object 클래스 메소드, String, 메소드 체인 (0) | 2023.10.24 |
Java_57_Log_로그 처리 (0) | 2023.10.17 |