자바에서 문자열을 관리하기 위해 제공되는 클래스
" " 로 묶어준 문자열도 String 객체이다.
주요 메서드
String str1 = new String("안녕하세요");
String str2 = new String("안녕하세요");
// == 는 두 객체가 같은 객체인지를 비교하는 것이고
// equals 두 객체가 관리하는 값이 같은지를 비교하는 것이다.
if (str1 == str2) {
System.out.println("str1과 str2는 같은 객체이다.");
} else {
System.out.println("str1과 str2는 같은 객체가 아니다.");
}
// 서로 다른 객체이다.
if (str1.equals(str2)) {
System.out.println("str1과 str2가 관리하는 문자열이 같다");
}
// 값을 비교하는 것이니까 같다고 나온다.
String str5 = "ABcdEF";
String str6 = str5.toUpperCase(); // str6 : ABCDEF
String str7 = str5.toLowerCase(); // str7 : abcdef
String str8 = "abcdefg";
boolean b1 = str8.startsWith("abc"); // b1 : true
boolean b2 = str8.startsWith("kkk"); // b2 : false
boolean b3 = str8.endsWith("efg"); // b3 : true
boolean b4 = str8.endsWith("kkk"); // b4 : false
String str9 = "abcdefg";
int idx1 = str9.indexOf("cde"); // idx1 : 2
int idx2 = str9.indexOf("kkk"); // idx2 : -1 (없으면 -1 반환)
String str10 = "abcdefg";
String str11 = "안녕하세요";
int a1 = str10.length(); // a1 : 7
int a2 = str11.length(); // a2 : 5
String str12 = "abcdefg";
// 순서값 2 부터 끝까지
String str13 = str12.substring(2); // str13 : cdefg
// 순서값 2 부터 5 - 1 까지
String str14 = str12.substring(2, 5); // str14 : cde
String str15 = " aaa ";
System.out.printf("[%s]\n", str15); // [ aaa ]
System.out.printf("[%s]\n", str15.trim()); // [aaa]
관리하는 문자열을 직접 조작할 수 있는 기능을 제공한다.
String 이 관리하는 문자열은 변경이 불가능해서 추가 변환 삭제 등의 작업을 하게 되면 새로운 문자열이 계속 생성된다.
메모리를 효율적으로 사용하기 위해 자주 변화되는 문자열은 StringBuffer 로 관리한다
// StringBuffer 생성
StringBuffer buffer1 = new StringBuffer();
StringBuffer buffer2 = new StringBuffer("문자열");
// 문자열 추가
buffer1.append(100);
buffer1.append(11.11);
buffer1.append("문자열"); // 10011.11문자열
// StringBuffer -> String
String str1 = buffer1.toString();
// 삽입
buffer1.insert(2, 555); // 10555011.11문자열
// 변경
// 2 ~ 5 -1까지를 동해물과 백두산으로 바꾼다.
buffer1.replace(2, 5, "동해물과 백두산"); // 10동해물과 백두산011.11문자열
// 삭제
// 2~10 -1까지 삭제
buffer1.delete(2, 10); // 10011.11문자열