Java의 String 클래스는 문자열을 다루는 핵심 클래스로, 불변(immutable) 특성을 가지고 있습니다.
public final class String {
private final byte[] value; // Java 9 이후
// private final char[] value; // Java 9 이전
// 다양한 메서드들
public int length() { ... }
public String concat(String str) { ... }
// 기타 메서드들...
}
Java 9 이후의 변경사항
- Java 9 이전:
private final char[] value;- Java 9 이후:
private final byte[] value;
->char는2byte를 차지한다. 그런데 영어, 숫자는 보통1byte로 표현이 가능 하다. 그래서 단순 영어, 숫자로만 표현된 경우1byte를 사용하고(정확히는 Latin-1 인코딩의 경우1byte사용) , 그렇지 않은 나머지의 경우2byte인 UTF-16 인코딩을 사용한다. 따라서 메모리를 더 효율적으로 사용할 수 있게 변경
String 객체를 생성하는 두 가지 주요 방법:
new 키워드를 사용한 객체 생성public class StringCreationExample {
public static void main(String[] args) {
String str1 = "Hello, World!"; // 리터럴 방식
String str2 = new String("Hello, World!"); // new 키워드 사용
System.out.println("str1: " + str1);
System.out.println("str2: " + str2);
}
}
리터럴 방식으로 생성된 문자열은 문자열 풀에 저장되어 메모리를 최적화합니다.
Java에서 문자를 다루는 기본 타입은 char이지만, 여러 문자를 다룰 때는 String이 더 편리합니다.
public class CharArrayVsString {
public static void main(String[] args) {
char[] charArray = {'J', 'a', 'v', 'a'};
String str = "Java";
System.out.println("char array: " + new String(charArray));
System.out.println("String: " + str);
}
}
char array: Java
String: Java
문자열 연결은 + 연산자나 concat() 메서드를 사용할 수 있습니다.
length()toUpperCase()toLowerCase()substring()trim()public class StringOperationsExample {
public static void main(String[] args) {
String prefix = "Hello";
String suffix = "World";
String result1 = prefix.concat(", ").concat(suffix);
String result2 = prefix + ", " + suffix;
System.out.println("Using concat(): " + result1);
System.out.println("Using + operator: " + result2);
// 기타 유용한 메서드들
System.out.println("Length: " + result2.length());
System.out.println("Uppercase: " + result2.toUpperCase());
System.out.println("Substring: " + result2.substring(0, 5));
}
}
== 연산자 사용equals() 메서드 사용public class StringComparisonExample {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
System.out.println("str1 == str2: " + (str1 == str2)); // true (동일성)
System.out.println("str1 == str3: " + (str1 == str3)); // false (동일성)
System.out.println("str1.equals(str3): " + str1.equals(str3)); // true (동등성)
}
}
Java의 String 클래스는:
문자열을 다룰 때는 String 클래스의 특성을 이해하고, 적절한 메서드와 비교 연산을 사용하는 것이 중요합니다.