728x90
join(), StringJoiner
join()은 여러 문자열 사이에 구분자를 넣어서 결합
package chapter09;
public class Study05Ex1 {
public static void main(String[] args) {
String animals = "dog,cat,pig";
String[] arr = animals.split(","); //문자열을 "," 구분자로 나눠서 배열에 저장
String str = String.join("-", arr); //"dog"+"-"+"cat"+"-"+"pig". 배열의 문자열을 '-'로 구분해서 결합
System.out.println(str); //dog-cat-pig
}
}
문자열과 기본형 간의 변환
package chapter09;
public class Study05Ex2 {
public static void main(String[] args) {
//숫자 -> 문자열
int i = 100;
//방법 1 숫자 + ""(빈문자열)
String str1 = i + "";
//방법2
String str2 = String.valueOf(i);
//방법 1은 편리, 방법 2는 속도가 빠름
//문자열을 숫자
//방법 1
int i1 = Integer.parseInt("100"); //"100"을 100으로 변환
//방법 2
int i2 = Integer.valueOf("100");
//방법 3. 원래는 반환 타입이 Integer
// Integer i2 = Integer.valueOf("100");
//※byte, short를 문자열로 변경할 때는 String valueOf(int i)를 사용하면 됨
System.out.println("=================");
int iVal = 100;
// String strVal = String.valueOf(iVal); //int를 String으로 변환
String strVal = iVal + "";
double dVal = 200.0;
String strVal2 = dVal + ""; //int를 String으로 변환
double sum = Integer.parseInt("+"+strVal)+Double.parseDouble(strVal2);
double sum2 = Integer.valueOf(strVal) + Double.valueOf(strVal2);
System.out.println(String.join("", strVal,"+",strVal2,"=")+sum);
System.out.println(strVal+"+"+strVal2+"="+sum2);
}
}
StringBuffer클래스
문자열을 저장하고 다루기 위한 클래스
String처럼 문자형 배열(char[])을 내부적으로 가지고 있음
public final class StringBuffer implements java.io.Serializable{
private char[] value;
(...생략...)
}
String과 달리 내용을 변경할 수 있음(mutable)
StringBuffer의 생성자
배열은 길이 변경 불가. 공간이 부족하면 새로운 배열 생성
만들어진 배열의 크기가 부족했을 때 크기가 더 큰 새로운 배열을 생성한 후 기존 배열의 내용을 복사, 참조 변경
StringBuffer는 저장한 문자열의 길이를 고려해서 적절한 크기로 생성
※버퍼의 크기를 지정하지 않으면 버퍼의 크기는 16이됨.
StringBuffer의 변경
StringBuffer는 String과 달리 내용 변경이 가능
StringBuffer sb = new StringBuffer("abc");
sb.append("123");
//※append() : 끝에 문자열 추가, delete() : 삭제, insert() 삽입
append()는 지정된 내용을 StringBuffer에 추가 후, StringBuffer의 참조를 반환(Study06Ex2)
package chapter09;
public class Study06Ex2 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("abc");
sb.append("123");
StringBuffer sb2 = sb.append("aa");
System.out.println(sb);
System.out.println(sb2);
//==> sb.append("123").append("aa");
// sb
}
}
StringBuffer의 비교
StringBuffer는 equals()가 오버라이딩되어 있지 않음(주소 비교)
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 클래스의 메서드
- StringBuffer()
16문자를 담을 수 있는 버퍼를 가진 StringBuffer 인스턴스를 생성
StringBuffer sb1 = new StringBuffer(); //""
- StringBuffer(int length)
지정된 개수의 문자를 담을 수 있는 버퍼를 가진 StringBuffer 인스턴스를 생성
StringBuffer sb2 = new StringBuffer(10); //""
- StringBuffer(String str)
지정된 문자열 값(str)을 갖는 StringBuffer 인스턴스를 생성
StringBuffer sb3 = new StringBuffer("Hello"); //"Hello"
- StringBuffer append(Object obj)
매개변수로 입력된 값을 문자열로 변환하여 StringBuffer 인스턴스가 저장하고 있는 문자열의 뒤에 덧붙임
StringBuffer sb4 = new StringBuffer("abc");
StringBuffer sb5 = sb4.append(true); //sb5 = abctrue
- int capacity()
StringBuffer인스턴스의 버퍼크기를 알려줌. length()는 버퍼에 담긴 문자열의 길이를 알려줌
StringBuffer sb6 = new StringBuffer(100);
sb6.append("abcd");
int bufferSize = sb6.capacity(); //100
int stringSize = sb6.length(); //4
- char charAt(int index)
지정된 위치(index)에 있는 문자를 반환
StringBuffer sb7 = new StringBuffer("abc");
char c1 = sb7.charAt(2); //'c'
- StringBuffer delete(int start, int end)
시작위치(start)부터 끝 위치(end) 사이에 있는 문자를 제거. 단, 끝 위치의 문자는 제외
StringBuffer sb8 = new StringBuffer("0123456");
StringBuffer sb9 = sb8.delete(2, 4); //01456
- StringBuffer deleteCharAt(int index) 지정된 위치(index)의 문자를 제거
StringBuffer sb10 = new StringBuffer("0123456");
StringBuffer sb11 = sb10.deleteCharAt(3); //012456
- StringBuffer insert(int pos, Object obj)
두 번째 매개변수로 받은 값을 문자열로 변환하여 지정된 위치(pos)에 추가. pos는 0부터 시작
StringBuffer sb12 = new StringBuffer("0123456");
sb12.insert(4, '/'); //0123/456
- int length() StringBuffer
인스턴스에 저장되어 있는 문자열의 길이를 반환
StringBuffer sb13 = new StringBuffer("0123456");
int length = sb13.length(); //7
- StringBuffer repalce(int start, int end, String str)
지정된 범위(start~end)의 문자들을 주어진 문자열로 바꿈. end 위치의 문자는 포함되지 않음(start<= x < end)
StringBuffer sb14 = new StringBuffer("0123456");
sb14.replace(3, 6, "xyz"); //012xyz6
- StringBuffer reverse()
StringBuffer인스턴스에 저장되어 있는 문자열의 순서를 거꾸로 나열
StringBuffer sb15 = new StringBuffer("0123456");
sb15.reverse(); //6543210
- void setCharAt(int index, char ch)
지정된 위치의 문자를 주어진 문자(ch)로 바꿈
StringBuffer sb16 = new StringBuffer("0123456");
sb16.setCharAt(0, '9'); //9123456
- void setLength(int newLength)
지정된 길이로 문자열의 길이를 변경. 길이를 늘리는 경우 나머지 빈 공간에 null 문자 '\u0000'으로 채움
StringBuffer sb17 = new StringBuffer("0123456");
sb17.setLength(5); //01234
StringBuffer sb18 = new StringBuffer("0123456");
sb18.setLength(10); //"0123456 "
String str1 = sb18.toString().trim(); //0123456
- String toString() StringBuffer 인스턴스의 문자열을 String으로 반환
StringBuffer sb19 = new StringBuffer("0123456");
String str2 = sb19.toString(); //0123456
- String substring(int start), String substring(int start, int end)
지정된 범위 내의 문자열을 String으로 뽑아서 반환. 시작위치만 지정하면 시작위치부터 문자열 끝까지 뽑아서 반환
StringBuffer sb20 = new StringBuffer("012345");
String str3 = sb20.substring(3); //345
String str4 = sb20.substring(3, 5); //34
package chapter09;
public class Study07Ex1 {
public static void main(String[] args) {
StringBuffer sb1 = new StringBuffer("01");
System.out.println(sb1); //01
StringBuffer sb2 = sb1.append(23);
System.out.println(sb2); //0123
sb1.append('4').append(56);
System.out.println(sb1); //0123456
StringBuffer sb3 = sb1.append(78);
System.out.println(sb3); //012345678
sb3.append(9.0);
System.out.println(sb3); //0123456789.0
System.out.println();
System.out.println(sb1);
System.out.println(sb2);
System.out.println(sb3);
System.out.println();
System.out.println(sb1.deleteCharAt(10)); //01234567890
System.out.println(sb1.delete(3, 6)); //01267890
System.out.println(sb1.insert(3, "abc")); //012abc67890
System.out.println(sb1.replace(6, sb1.length(), "end")); ////012abcend
System.out.println();
System.out.println(sb1.capacity()); //18
System.out.println(sb1.length()); //9
}
}
728x90