개발/Java
자바 String 클래스
by BellOne4222
2024. 1. 29.
자바 String 클래스
문자열 생성 방법
String str1 = new String("Hello World")
String str2 = new String("Hello World")
- stack메모리에 저장된 str1객체를 Heap 메모리에 새로운 Stirng객체를 생성(str1에서 HelloWorld를 가리킨다)
- new를 사용하면 Heap Memory에 저장
String str1 = "HelloWorld" // 리터럴 상수
String str2 = "HelloWorld" // 리터럴 상수
- stack메모리에 저장된 str1객체를 Literal Pool 메모리에 새로운 문자열 객체를 생성 (str1에서 HelloWorld를 가리킨다)
- Literal Pool
- 재활용 메모리 공간
- 한 번 만들어진 객체를 다시 생성하지 않고 str2도 같은 주소를 가리키게 재활용
- 이미 생성된 문자열을 가리킨다
String 클래스에서 제공하는 메서드 활용
public class StringManipulation {
public static void main(String[] args) {
// HelloWorld 라는 문자열을 생성하세요.
int a = 10;
String str = "HelloWorld";
System.out.println(str.charAt(1)); // 'e'
System.out.println(str.replaceAll("o", "X")); // HellXWXrld //
System.out.println(str.length()); // 10
System.out.println(str.toUpperCase()); // HELLOWORLD
System.out.println(str.toLowerCase()); // helloworld
System.out.println(str.substring(5)); // World
System.out.println(str.substring(5, 8)); // Wor
System.out.println(str.indexOf("Wr")); // 5, -1
for (int i = 0; i < str.length(); i++) {
System.out.println(str.charAt(i));
}
}
}
문자열을 비교하는 방법
- 문자열은 == 으로 같은지 판별 할 수 없다.
- equals() 메서드를 사용해서 문자열의 동등 판단
- compareTo() 메서드
- 문자열을 사전순으로 비교하며 두 문자열이 같으면 0을 반환하고, 비교 대상 문자열이 기준 문자열보다 작으면 음수를, 크면 양수를 반환
- str1.compareTo(str2)
- 각 문자열의 아스키코드값으로 비교하는 방식
public class StringCompare {
public static void main(String[] args) {
String str1="Hello";
String str2="World";
if(str1.equals(str2)){
System.out.println("str1==str2");
}else{
System.out.println("str1!=str2"); // O
}
String str3="apple";
String str4="banana";
int result=str3.compareTo(str4); // 0, 음수, 양수
if(result==0){
System.out.println("str3==str4");
}else if(result<0){
System.out.println("str3<str4");
}else{
System.out.println("str3>str4");
}
}
}
문자열 분리(delimiter)
public class StringSplit {
public static void main(String[] args) {
String str = "Hello,World,Java";
String[] strArray = str.split(","); // ,을 기준으로 분리
for ( String s: strArray){
System.out.println(s);
}
String str1 = "Hello World Java";
String[] str1Array = str1.split("\\s+"); // 공백을 기준으로 분리
for(String s : str1Array){
System.out.println(s);
}
Scanner scanner = new Scanner(System.in);
System.out.println("문자열을 입력하세요");
String str2 = scanner.nextLine();
String[] str2Array = str2.split("\\s+"); // 입력받은 문자열을 공백을 기준으로 분
for(String s : str2Array){
System.out.println(s);
}
}
}