String 클래스에는 문자열과 관련된 작업을 할 때 유용하게 사용할 수 있는 다양한 메소드가 포함되어 있습니다.
이러한 String 클래스는 java.lang 패키지에 포함되어 제공됩니다.
String 인스턴스는 한 번 생성되면 그 값을 읽기만 할 수 있고, 변경할 수는 없습니다.
이러한 객체를 자바에서는 불변 객체(immutable object)라고 합니다.
즉, 자바에서 덧셈(+) 연산자를 이용하여 문자열 결합을 수행하면, 기존 문자열의 내용이 변경되는 것이 아니라 내용이 합쳐진 새로운 String 인스턴스가 생성되는 것입니다.
package sec4;
import java.util.Arrays;
public class StringEx1 {
public static void main(String[] args) {
String str1 = new String("HongGilDong");
String str2 = "HongKilBong";
System.out.println(str1);
System.out.println("특정 위치 문자열 출력 : " + str1.charAt(3));
System.out.println("문자열 비교 : " + str1.equals(str2));
byte[] bArr = str1.getBytes(); // 문자열을 Byte 배열로 분리
// 별도의 메소드를 통해 반복문 출력
printArr(bArr);
// byte 배열을 char 배열로 변환
char[] cArr = new char[bArr.length];
for(int i=0; i<bArr.length; i++) {
cArr[i] = (char) bArr[i];
}
// Arrays.toString() 이용
System.out.print("byte[] 의 출력"+ Arrays.toString(cArr));
System.out.println();
// 특정 문자의 인덱스를 찾음
System.out.println("i 는 몇 번째? : "+(str1.indexOf("i")));
System.out.println("인덱스가 3부터 6전 까지 : "+str1.substring(3, 6));
System.out.println("소문자 : "+str1.toLowerCase());
System.out.println("대문자 : "+str1.toUpperCase());
String data1 = str1.replace("H", "K");
System.out.println(data1);
String str3 = " My name is kim ";
System.out.println(str3);
System.out.println("공백 제거 전 글자 : "+str3.length());
System.out.println("공백 제거 후 글자 : "+str3.trim().length());
int k = 1004;
String t1 = k+""; // 비추천
String t2 = String.valueOf(k); // 추천
System.out.println(t1);
System.out.println(t2);
// String을 통해 만들어진 객체인가 확인
System.out.println("k가 문자열 ? "+(t1 instanceof String));
System.out.println("k가 문자열 ? "+(t2 instanceof String));
}
// byte 배열의 형태로 받은 정보를 다시 char를 통해 글자로 출력
static void printArr(byte[] b) {
for(int i=0; i<b.length; i++) {
char c = (char) b[i];
System.out.print(c);
}
System.out.println();
}
}
package sec4;
import java.util.Arrays;
import java.util.StringTokenizer;
public class StringEx2 {
public static void main(String[] args) {
String mem1 = "이슬비/박나연/최상민/황교진/김이호";
String[] m1 = mem1.split("/");
System.out.println(Arrays.toString(m1));
for(String s:m1) {
System.out.println(s);
}
System.out.println();
// 여러 구분자를 이용해 나눌경우
String mem2 = "신승원&오세훈,백준철,구예진-김기태";
String[] m2 = mem2.split("&|,|-");
System.out.println(Arrays.toString(m2));
System.out.println();
// StringTokenizer 를 이용한 방법
String mem3 = "오태훈/신예은/박진관/김현경/김보경";
StringTokenizer m3 = new StringTokenizer(mem3, "/");
int cnt = m3.countTokens(); // 토큰에 의해 분리된 요소수
for (int i=0; i<cnt; i++) {
String token = m3.nextToken();
System.out.println(token);
}
}
}
package sec4;
import java.util.Arrays;
public class StringEx3 {
public static void main(String[] args) {
String str1 = new String();
str1+="서광";
str1+="/";
str1+="이은영";
str1+="/";
str1+="한선";
str1+="/";
str1+="이소윤";
System.out.println(str1);
// String을 좀 더 쉽게 사용하게 만들어줌
StringBuffer str2 = new StringBuffer();
str2.append("신승원");
str2.append("/");
str2.append("오세훈");
str2.append("/");
str2.append("구예진");
str2.append("/");
str2.append("백준철");
str2.append("/");
System.out.println(str2);
str2.replace(0, 3,"김기태");
System.out.println(str2);
str2.delete(4, 8);
System.out.println(str2);
StringBuilder str3 = new StringBuilder();
str3.append("황교진");
str3.append("-");
str3.append("이슬비");
str3.append("-");
str3.append("최상민");
str3.append("-");
str3.append("김이호");
System.out.println(str3);
str3.insert(4, "오세훈-"); // 끼워넣기 연산자
System.out.println(str3);
System.out.println(str3.substring(4, 7));
System.out.println(str3.reverse());
String[] str4 = str3.toString().split("-");
System.out.println(Arrays.toString(str4));
}
}