문자열 클래스
문자열 클래스는 문자열에 대한 처리를 위한 다양한 메서드가 정의되어 있는 클래스입니다.
Java에서는 String 클래스를 통해 문자열에 대한 처리를 제공합니다. 다양한 메서드들이 제공되기 때문에 Java는 문자열을 다루기에 상당히 편리한 언어입니다.
① concat
contat() 메서드를 이용하면 원하는 문자열을 결합합니다. 하지만 실제로는 문자열 외에 다른 자료형도 결합할 수 있는 +연산자를 더 많이 이용합니다.
package chapter10;
public class exam10_concat {
public static void main(String[] args) {
String a = "Hi";
String b = "Java";
System.out.println(a+b);
String c = "Hello";
String d = "Java Program";
System.out.println(c.concat(d));
}
}
② charAt()
charAt(index) 메서드는 지정한 인덱스의 위치에 있는 문자를 반환해 주는 메서드입니다.
③ length()
length() 메서드는 해당 문자열의 길이를 반환하는 메서드입니다. 문자열의 길이를 쉽게 알 수 있기 때문에 문자열 전체에 대해 작업하는 반복문에 사용합니다.
package chapter10;
public class exam10_charAt_lenght {
public static void main(String[] args) {
String a = "hello Java!";
char b = a.charAt(0);
for (int i = 0; i < a.length(); i++) {
System.out.println(a.charAt(i));
}
}
}
④ indexOf()
indexOf() 메서드는 문자나 문자열이 어디에 위치하는지 알려주는 메서드입니다. 만약 문자열 내에 없다면 -1을 반환합니다.
package chapter10;
public class exam10_indexOf {
public static void main(String[] args) {
String a = "abcdefghijk";
int b = a.indexOf("c");
System.out.println("문자 c는 " + b + "번째 입니다.");
}
}
⑤ substring()
substring() 메서드는 문자열을 잘라낼 때 사용합니다. substring의 파라미터로 인덱스 2개를 사용할 경우에는 첫 번째 인덱스로부터 두 번째 인덱스의 전까지 잘라냅니다.
package chapter10;
public class exam10_substring {
public static void main(String[] args) {
String a = "012345678"; // 인덱스는 0부터 시작합니다.
String b = a.substring(4,8); // 4번째부터 8번째 전까지 잘라준다.
System.out.println(b);
}
}
⑥ equals()
equals() 메서드는 문자열의 내용을 비교하는 메서드입니다. 문자열의 내용이 일치하면 true, 일치하지 않으면 false를 반환합니다.
package chapter10;
public class exam10_equals {
public static void main(String[] args) {
String a = "Java";
String b = "Java?";
System.out.println(a.contentEquals(b));
}
}
⑦ split()
split() 메서드는 특정한 기호로 문자열을 구분해서 각각 배열의 요소로 저장하는 메서드입니다.
package chapter10;
public class exam10_split {
// 중요
public static void main(String[] args) {
String a = "kor,eng,math";
String div[] = a.split(",");
for (int i = 0; i< div.length; i++) {
System.out.println(div[i]);
}
}
}
⑧ equalsIgnoreCase()
equalsIgnoreCase() 메서드는 영문으로 된 문자열을 대소문자 구분 없이 비교하는 메서드입니다. 대소문자를 구분하지 않고 문자열이 일치하면 true, 일치하지 않으면 false를 반환합니다.
package chapter10;
public class exam10_equalsIgnoreCase {
public static void main(String[] args) {
String a = "Java";
String b = "JAVA";
System.out.println(a.equalsIgnoreCase(b));
}
}
⑨ join()
join() 메서드는 배열을 특정한 문자들 사이사이에 넣어서 문자열로 결합하는 메서드입니다.
package chapter10;
public class exam10_join {
public static void main(String[] args) {
String a[] = {"kor","eng","math"};
System.out.println(String.join("-", a));
}
}
⑩ trim()
trim() 메서드는 문자열의 앞, 뒤 공백을 제거하는 메서드입니다.
package chapter10;
public class exam10_trim {
public static void main(String[] args) {
String a = (" Hello Java ");
System.out.println(a);
String b = a.trim();
System.out.println(b);
}
}
⑪ valueOf()
valueOf() 메서드는 기본형을 String으로 변환시키는 메서드입니다.
package chapter10;
public class exam10_valueof {
public static void main(String[] args) {
int a = 1;
int b = 2;
System.out.print("a+b = ");
String c = String.valueOf(a);
String d = String.valueOf(b);
System.out.println(c+d);
}
}
⑫ format()
String은 문자열에 적절한 포맷을 줄 수 있습니다. 활용방법은 printf() 메서드와 같습니다. 문자열 내에 정수가 들어갈 자리에는 %d, 실수의 자리에는 %f, 다른 문자열의 자리에는 %s를 작성해 놓고 순서대로 파라미터를 추가합니다.
package chapter10;
public class exam10_format {
public static void main(String[] args) {
System.out.println(String.format("%d", 1234+5678)); // 정수형
System.out.println(String.format("%s", "1234"+"5678")); // 문자열
}
}
⑬ StringBuilder / StringBuffer
String은 immutable(변하지 않는)한 객체이기 때문에 자주 사용할수록 속도가 느려집니다. 왜냐하면 문자열을 작업할 때마다 인스턴스를 만들기 때문입니다. 이러한 단점을 보완하는 클래스가 StringBuilder / StringBuffer 클래스입니다. 이 클래스들은 객체 안의 데이터를 내부적으로 변경할 수 있으므로 새로운 객체를 만들지 않습니다. 즉 mutable(변할 수 있는)한 객체입니다.
package chapter10;
public class exam10_stringBuilder_StringBuffer{
public static void main(String[] args) {
String a = "java";
String b = "Hello";
System.out.println("a : " + a.hashCode());
System.out.println("b : " + b.hashCode());
a = a+b;
System.out.println("a : " + a.hashCode());
StringBuffer c = new StringBuffer();
System.out.println("c : " + c.hashCode());
c.append(2);
c.append("+");
c.append(3);
c.append("=");
c.append(5);
System.out.println(c);
c.append("TEST StringBuffer");
System.out.println("c : " + c.hashCode());
}
}
StringBuffer 클래스의 메서드
메서드 | 의미 |
append() | 매개변수로 입력된 값을 문자열로 바꾸어서 더해주는 메서드 |
reverse() | 문자열의 순서를 반대로 나열하는 메서드 |
insert(int pos, Object obj) | 두 번째 매개변수의 값을 문자열로 바꾸어서 pos인 위치에 추가하는 메서드 |
delete(start, end) | start의 위치부터 end 직전의 위치의 문자열을 제거하는 메서드 |
deleteCharAt(int index) | index위치에 있는 문자를 제거하는 메서드 |
StringBuffer
StringBuffer 는 StringBuilder와 사용하는 방법과 메서드가 똑같습니다. 두 클래스의 차이는 StringBuffer가 멀티 스레드에서 동기화 처리를 지원한다는 사실입니다. 다만 이 동기화 처리가 StringBuffer의 성능을 저하하므로 지금과 같이 단일 스레드로 작성할 경우에는 StringBuffer를 사용하는 것이 유리하고 멀티스레드의 경우에는 동기화 처리를 지원하는 StringBuffer를 사용하는 것이 좋습니다.
'JAVA > 기본API 클래스 알아보기' 카테고리의 다른 글
Wrapper (0) | 2025.05.15 |
---|---|
Scanner (0) | 2025.05.15 |
random (0) | 2025.05.15 |
시간 처리 Date, Calendar2 (0) | 2025.05.15 |
시간 처리 Date, Calendar1 (0) | 2025.05.13 |