남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다.
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" |
댓글