본문 바로가기
프로그래밍/JAVA

자바의 정석 기초 ( join / StringJoiner / StringBuffer클래스 / StringBuffer 생성자 / StringBuffer의 생성자와 메서드)

by ✲ 2020. 7. 30.
반응형

남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다. 

Join() 과 StringJoiner 

- Join()은 여러 문자열 사이에 구분자를 넣어서 결합

String animals = "dog,cat,bear";

String[] arr = animals.split(",");

String str = String.join("-", arr);    // 배열의 문자열을 '-'로 구분해서 결합 

System.out.println(str);               // dog-cat-bear

 

문자열과 기본형 간의 변환

- 숫자를 문자열로 바꾸는 방법 

int i  = 100 ;

String str = i + "";                     // 100을 "100"으로 변환하는 방법1

String str2 = String.valueOf(i);      // 100을 "100"으로 변환하는 방법2 (1보다 속도가 빠름)

 

- 문자열을 숫자로 바꾸는 방법

int i = Integer.parseInt("100");      // "100"을 100으로 변환하는 방법1

int i2 = Integer.valueOf("100");    // "100"을 100으로 변환하는 방법2 

Integer i2 = Integer.valueOf("100");   //원래는 반환 타입이 Integer

 

StringBuffer클래스 

- String처럼 문자열 배열(char[])을 내부적으로 가지고 있다. 

- 그러나, String과 달리 내용을 변경할 수 있다. (mutable)

 

StringBuffer의 생성자 

- 배열은 길이 변경 불가. 공간이 부족하면 새로운 배열 생성 

- StringBuffer는 저장할 문자열의 길이를 고려해서 적절한 크기로 생성 

 

StringBuffer의 변경

 - StringBuffer는 String과 달리 내용 변경이 가능하다. 

StringBuffer sb = new StringBuffer("abc");

sb.append("123");          // sb의 내용 뒤에 "123"을 추가 

- append()는 지정된 내용을 StringBuffer에 추가 후, StringBuffer의 참조를 반환

StringBuffer sb2= sb.append("ZZ");

System.out.println(sb);    //abc123ZZ

System.out.println(sb);    //abc123ZZ

 

StringBuffer의 비교 

- StringBuffer는 equals()가 오버라이딩 되어 있지 않다. (주소비교) 

StringBuffer sb = new StringBuffer("abc");

StringBuffer sb2 = new StringBuffer("abc");

System.out.println(sb==sb2); //false

System.out.println(sb.equals(sb2));  //false

- StringBuffer을 String으로 변환 후 equals()로 비교해야 한다. 

String s = sb.toString();

String s2 = sb.toString();

System.out.println(s.equals(s2));    // true 

 

StringBuffer의 생성자와 메서드 

메서드 / 설명 예제 결과 
StringBuffer()
16문자를 담을 수 있는 버퍼를 가진 StringBuffer 
인스턴스를 생성한다.
StringBuffer sb = new StringBuffer(); sb = "" 
StringBuffer(int length)
지정된 개수의 문자를 담을 수 있는 버퍼를 
가진 StringBuffer인스턴스를 생성한다. 
StringBuffer sb = new StringBuffer(10); sb = "" 
StringBuffer(String str)
지정된 문자열 값(str)을 갖는 StringBuffer 
인스턴스를 생성한다. 
StringBuffer sb  = new StringBuffer("Hi"); sb = "Hi"
StringBuffer append(boolean b)
StringBuffer append(char c)
StringBUffer append(char[] str)
StringBuffer append(double d)
StringBuffer append(float f)
StringBuffer append(int i)
StringBuffer append(long i)
StringBuffer append(Object obj)
StringBuffer append(String str)

매개변수로 입력된 값을 문자열로 변환하여 StringBuffer인스턴스가 저장하고 있는 
문자열의 뒤에 덧붙인다. 
StringBuffer sb = new StringBuffer("abc");
StringBuffer sb2 = sb.append(true);
sb.append('d').append(10.0f);
StringBuffer sb3 = sb.append("ABC").append(123);
sb= "abctrued10.0ABC123"
sb2 =
 "abctrued10.0ABC123"
sb3= 
"abctrued10.0ABC123"
int capacity()
StringBuffer인스턴스의 버퍼크기를 알려준다. 
length()는 버퍼에 담긴 문자열의 길이를 알려준다.
StringBuffer sb = new StringBuffer(100);
sb.append("abcd");
int bufferSize = sb.capacity();
int stringSize = sb.length();
bufferSize  = 100
stringSize = 4 
(sb에 담긴 문자열이 "abcd"이므로) 
char charAt(int index) 
지정된 위치(index)에 있는 문자를 반환한다. 
StringBuffer sb = new StringBuffer("abc");
char c = sb.charAt(2);
c= 'c'
StringBuffer delete(int start, int end)
시작위치(start)부터 끝위치(end) 사이에 있는
문자를 제거한다. 
단, 끝 위치의 문자는 제외 
StringBuffer sb = new StringBuffer("0123456");
StringBuffer sb2 = sb.delete(3,6);

sb = "0126"
sb2 = "0126"
StringBuffer deleteCharAt(int index)
지정된 위치(index)의 문자를 제거한다. 
StringBuffer sb = new StringBuffer("0123456");
sb.deleteCharAt(3);
sb= "012456"
StringBuffer insert(int pos, boolean b)
StringBuffer insert(int pos, char c)
StringBuffer insert(int pos, char[] str)
StringBuffer insert(int pos, double d)
StringBuffer insert(int pos, float f)
StringBuffer insert(int pos, int i)
StringBuffer insert(int pos, long l)
StringBuffer insert(int pos, Object obj)
StringBuffer insert(int pos, String str)
두 번째 매개변수로 받은 값을 문자열로 변환하여
지정된 위치(pos)에 추가한다. pos는 0부터 시작 
StringBuffer sb = new StringBuffer("0123456");
sb.insert(4,'.');
sb="0123.456"
int lnegth()
StringBuffer인스턴스에 저장되어 있는 문자열의 길이를 반환한다. 
StringBuffer sb = new StringBuffer("0123456");
int length = sb.length();
length = 7 
StringBuffer replace(int start, int end, String str) 
지정된 범위(Start ~ end)의 문자들을 
주어진 문자열로 바꾼다. 
end위치의 문자는 범위에 포함되지않음
(start <= x < end) 
StrisngBuffer sb = new StringBuffer("0123456")
sb.replace(3,6,"AB");
sb = "012AB6"
StringBuffer reverse()
StringBuffer인스턴스에 저장되어 있는 문자열의 순서를 거꾸로 나열한다. 
StringBuffer sb = new StringBuffer("0123456");
sb.reverse();
sb = "6543210"
void setCharAt(int index, char ch) 
지정된 위치의 문자를 주어진 문자(ch)로 바꾼다. 
StringBuffer sb = new StringBuffer("0123456");
sb.setCharAt(5, 'o');
sb = "01234o6"
void setLength(int newLength)
지정된 길이로 문자열의 길이를 변경한다. 
길이를 늘리는 겨우 나머지 빈공간을 널문자 '\u0000'로 채운다 
StringBuffer sb = new StringBuffer("0123456");
sb.setLength(5);

StringBuffer sb2 = new StringBuffer("0123456");
sb2.setLength(10);

String str = sb2.toString().trim();
sb= "01234"
sb2 = "0123456   "
str = "0123456"
String toString()
StringBuffer인스턴스의 문자열을 String으로 반환 
StringBuffer sb = new StringBuffer("0123456");
String str = sb.subString(3);
String str2 = sb.subString(3,5);
str = "3456"
str2 = "34" 
반응형

댓글