개발/Java

Java의 String 클래스

ju_ni_ 2023. 7. 20. 10:05
반응형

번 포스팅에서는 Java에서 자주 사용되는 클래스 중 하나인 String 클래스에 대해 알아보도록 하겠습니다. String 클래스는 char 배열과 관련 메소드들로 이루어져 있으며, 한번 생성된 String 객체의 내용은 불변입니다. 이러한 특성 때문에 문자열을 자주 변경해야 하는 경우 String 클래스보다는 StringBuilderStringBuffer 클래스를 사용하는 것이 효율적입니다. 그렇다면 이제 자세히 살펴보도록 하겠습니다.

 

 

String 클래스의 불변성

 

String 클래스는 불변(immutable) 클래스입니다. , String 클래스의 객체를 한 번 생성하면 그 내용을 변경할 수 없습니다. 문자열을 변경하는 것처럼 보이는 작업을 수행하면, 기존의 객체를 변경하는 것이 아니라 새로운 객체가 생성되고, 그 객체를 참조하도록 변수의 참조 값이 변경됩니다.

 

public class Main {
    public static void main(String[] args) {
        String data1= "pine";
        String data2= "apple";
        data1 = data1 + data2; 

        System.out.println("결과 문자열: " + data1);
    }
}
결과 문자열: pineapple

 

위의 예제에서 data1 + data2"pineapple"이라는 새로운 문자열을 만들었지만, 이는 기존 "pine" 문자열에 "apple" 문자열을 추가한 것이 아닙니다. 대신, "pineapple"이라는 새로운 문자열 객체가 생성되고, 그 객체의 참조 값이 data1에 저장되는 것입니다.

 

 

String 클래스의 메소드

 

String 클래스는 여러가지 유용한 메소드를 제공합니다. 이들 메소드를 활용하면 문자열 처리 작업을 간편하게 수행할 수 있습니다.

 

  • length(): 이 메소드는 문자열의 길이를 반환합니다. 문자열에 포함된 문자의 개수를 알고 싶을 때 사용합니다.
  • charAt(int index): 이 메소드는 문자열에서 특정 위치의 문자를 반환합니다. index는 0부터 시작하며, 입력된 인덱스에 해당하는 문자를 반환합니다.
  • toUpperCase(): 이 메소드는 문자열의 모든 문자를 대문자로 변환한 새로운 문자열을 반환합니다.
  • replace(CharSequence target, CharSequence replacement): 이 메소드는 문자열에서 target에 해당하는 부분을 replacement로 치환한 새로운 문자열을 반환합니다.

 

이제 이러한 메소드들을 사용한 예시 코드를 살펴보겠습니다.

 

public class Main {
    public static void main(String[] args) {
        String str = "Hello, Java World!";
        
        System.out.println("문자열 길이: " + str.length());
        System.out.println("5번째 위치의 문자: " + str.charAt(4));
        System.out.println("대문자로 변환: " + str.toUpperCase());
        System.out.println("Hello를 Hi로 변환: " + str.replace("Hello", "Hi"));
    }
}
문자열 길이: 17
5번째 위치의 문자: o
대문자로 변환: HELLO, JAVA WORLD!
Hello를 Hi로 변환: Hi, Java World!

 

위의 예제에서는 length(), charAt(), toUpperCase(), replace() 등의 String 클래스의 메소드들을 사용하고 있습니다.

 

 

이렇게 String 클래스는 불변의 특성을 가지고 있기 때문에, 문자열의 내용이 변하지 않는 상황에서는 매우 편리하게 사용할 수 있습니다. 그러나 문자열의 내용이 자주 변경되는 경우에는 매번 새로운 객체가 생성되기 때문에 메모리 사용이 비효율적이 될 수 있습니다. 이럴 경우에는 StringBuilderStringBuffer 클래스를 사용하는 것이 좋습니다.

다음 포스팅에서는 StringBuilderStringBuffer 클래스에 대해 알아보도록 하겠습니다.

반응형