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 | 31 |
Tags
- S&P500
- 기업분석
- etf
- mco
- 접근제어자
- 그리디 알고리즘
- 미국주식
- StringBuffer
- 프로그래머스
- 다형성
- XLF
- 금리인상
- 잉여현금흐름
- FCF
- 주식
- 배당성장
- 제태크
- 인플레이션
- object
- 금리인하
- 자바
- 오버라이딩
- 백준
- 객체지향
- 주린이
- javascript
- 현금흐름표
- Java
- 알고리즘
- 무디스
Archives
- Today
- Total
오늘의하루
[JAVA] StringBuffer클래스의 메서드 본문
반응형
StringBuffer의 특징
StringBuffer는 동기화(데이터 보호)되어 있고 멀티스레드에 안전하다는 특징이 있다.
- 스레드의 종류 및 특징
- 싱글 스레드는 한 번에 1개의 작업을 하는 것을 말합니다.
- 멀티 스레드는 한 번에 n개의 작업을 하는 것을 말합니다.
- 멀티 스레드의 경우 스레드끼리 데이터를 공유하는데 이때 데이터가 꼬일 수 있으며 이를 방지하기 위해서는 동기화로 작업해주어야 합니다. (데이터 보호 목적)
- StringBuffer() : 16 문자를 담을 수 있는 버퍼를 가진 StringBuffer 인스턴스를 생성한다.
- StringBuffer(int length) : 지정된 개수의 문자를 담을 수 있는 버퍼를 가진 StringBuffer 인스턴스를 생성한다.
- StringBuffer(String str) : 지정된 문자열 값(str)을 갖는 StringBuffer 인스턴스를 생성한다.
class StringBuffer1{
StringBuffer sb1 = new StringBuffer(); // 결과 : sb = ""
StringBuffer sb2 = new StringBuffer(10); // 결과 : sb = ""(배열 길이 10)
StringBuffer sb3 = new StringBuffer("Hi"); // 결과 : sb = "Hi"
}
- StringBuffer append(...) : 매개변수로 입력된 값을 문자열로 변환하여 StringBuffer 인스턴스가 저장하고 있는 문자열의 뒤에 덧붙인다.
- ... 에 들어갈 수 있는 타입 : boolean, char, char [], double, float, int, long, Object, String
- StringBuffer C = A.append(B) : A가 가리키는 객체에 B를 덧붙이고 그 주소를 참조 변수 C에 대입한다.
class StringBuffer2{
StringBuffer sb1 = new StringBuffer("abc");
void appendTest(){
StringBuffer sb2 = sb1.append(true);
sb1.append('d').append(10.0f); // f는 배열에 들어가지 않는다.
StringBuffer sb3 = sb1.append("ABC").append(123);
System.out.println(sb1); // abctrued10.0ABC123
System.out.println(sb2); // abctrued10.0ABC123
System.out.println(sb3); // abctrued10.0ABC123
}
}
- int capacity() : StringBuffer 인스턴스의 버퍼 크기( 총배열의 길이 )를 알려준다.
- int length() : StringBuffer 인스턴스에 담긴 문자열의 길이를 알려준다.
class StringBuffer3{
StringBuffer sb = new StringBuffer(100);
void appendTest(){
sb.append("abcd");
}
int bufferSize = sb.capacity(); // bufferSize = 100
int stringSize = sb.length(); // stringSize = 4
}
- char charAt(int index) : 지정된 위치(index)에 있는 문자를 반환한다.
class StringBuffer4{
StringBuffer sb = new StringBuffer("abc");
char c = sb.charAt(2); // c = 'c'
}
- StringBuffer delete(int start, int end) : 시작 위치(start)부터 끝 위치(end) 사이에 있는 문자를 제거한다.
- 단, 끝 위치(end)의 문자는 제외한다.
- start <= x < end
- StringBuffer deleteCharAt(int index) : 지정된 위치(index)의 문자를 제거한다.
- StringBuffer insert(int pos,...) : 두 번째 매개변수로 받은 값을 문자열로 변환하여 지정된 위치(pos)에 추가한다.
- ... 에 들어가는 타입 : boolean, char, char [], double, float, int, long, Object, String
class StringBuffer5{
StringBuffer sb1 = new StringBuffer("0123456");
StringBuffer sb3 = new StringBuffer("0123456");
StringBuffer sb4 = new StringBuffer("0123456");
void get(){
StringBuffer sb2 = sb1.delete(3,6); // 345
System.out.println(sb1); // 0126
System.out.println(sb2); // 0126
sb3.deleteCharAt(3); // index 3 위치 제거
System.out.println(sb3); // 012456
sb4.insert(4,'.'); // index 4 위치에 .을 추가한다.
System.out.println(sb4); // 0123.456
}
}
- StringBuffer replace(int start, int end, String str) : 지정된 범위(start~end)의 문자들을 주어진 문자열로 바꾼다.
- 단, end 위치에 있는 문자는 포함되지 않는다.
- start <= x < end
class StringBuffer6{
StringBuffer sb = new StringBuffer("0123456");
void replaceTest(){
sb.replace(3,6,"AB"); // 인덱스 3 ~ 5까지 제거 후 "AB"로 대체
System.out.println(sb); // 012AB6
}
}
- StringBuffer reverse() : StringBuffer 인스턴스에 저장되어 있는 문자열의 순서를 거꾸로 나열한다.
class StringBuffer7{
StringBuffer sb = new StringBuffer("asdf0123");
void reverseTest(){
sb.reverse();
System.out.println(sb); // 3210fdsa
}
}
- void setCharAt(int index, char ch) : 지정된 위치의 문자를 주어진 문자(ch)로 바꾼다.
class StringBuffer8{
StringBuffer sb = new StringBuffer("0123456");
void setCharAtTest(){
sb.setCharAt(5, 'o');
System.out.println(sb); // 01234o6
}
}
- String toString() : StringBuffer인스턴스의 문자열을 String으로 반환한다.
class StringBuffer9{
StringBuffer sb = new StringBuffer("0123456");
String str = sb.toString(); // 문자열 "0123456"
}
- void setLength(int newLength) : 지정된 길이로 문자열의 길이를 변경합니다.
- 단, 길이가 늘리는 경우 나머지 빈 공간을 널문자 '\u0000'로 채운다.
class StringBuffer9{
StringBuffer sb1 = new StringBuffer("0123456");
StringBuffer sb2 = new StringBuffer("0123456");
String str = "";
void setLengthTest(){
sb1.setLength(5); // 012345
sb2.setLength(10); // 0123456nullnullnull
str = sb2.toString().trim(); // 0123456
// trim()은 앞뒤로 빈공간을 없애는 String 메서드이다.
}
}
- String substring(int start) : 지정된 위치(start)부터 문자열 끝까지 반환
- String substring(int start, int end) : 지정된 위치(start)부터 끝 위치(end) 전까지 문자열로 반환한다.
- start <= x < end
class StringBuffer11{
StringBuffer sb = new StringBuffer("0123456");
String str1 = sb.substring(3); // 3456
String str2 = sb.substring(3, 5); // 34
}
2. StringBuffer에 대해 자세히 알아보기
- StringBuffer는 String처럼 문자열 배열(char [])을 내부적으로 가지고 있다.
- String은 불변이지만 StringBuffer는 내용 변경이 가능하다.
StringBuffer sb = new StringBuffer("abc");
// char[] 타입으로 {'a','b','c'} 생성되고 이 주소를 참조변수 sb에 저장한다.
sb.append("123");
// char[] 타입으로 {'a','b','c','1','2','3'} 이렇게 내용이 변경되고 주소를 참조변수 sb에 저장한다.
- StringBuffer는 equals()가 오버 라이딩되어 있지 않다. (주소 비교)
- String은 equals()가 오버 라이딩되어 값을 비교한다.
public class StringBufferTEST {
public static void main(String[] args) {
StringBuffer sb1 = new StringBuffer("abc");
StringBuffer sb2 = new StringBuffer("abc");
System.out.println(sb1 == sb2); // 주소비교 false
System.out.println(sb1.equals(sb2)); // 주소비교 false
// StringBuffer -> String으로 변환 후 equals()로 값 비교
String s1 = sb1.toString();
String s2 = sb2.toString();
System.out.println(s1.equals(s2)); // 값비교 true
StringBuffer t1 = new StringBuffer("a");
StringBuffer t2 = t1.append("B");
StringBuffer t3 = t2.append(10.0f);
System.out.println(t1); // aB10.0
System.out.println(t2); // aB10.0
System.out.println(t3); // aB10.0
}
}
반응형
'JAVA' 카테고리의 다른 글
[JAVA] 객체지향 개념 다형성 상속 추상화 인터페이스 (0) | 2022.08.09 |
---|---|
[JAVA] StringBuilder클래스와 Math클래스 확인하기 (0) | 2022.08.08 |
[JAVA] String클래스의 생성자와 메서드 (0) | 2022.08.05 |
[JAVA] String클래스 (0) | 2022.08.05 |
[JAVA] Object Class 1편 equals hashCode toString clone 메서드 (0) | 2022.08.04 |
Comments