ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] String클래스
    JAVA 2022. 8. 5. 11:39
    728x90
    반응형

    1. String 클래스 정보

    • 문자열을 다루기 위한 클래스
    • 데이터(char []) + 메서드(문자열 관련)
    • 내용을 변경할 수 없는 불변(immutable) 클래스이다.
    class StringTest1{
        String a = "a";
        String b = "b";
        
        void StringSum(){
            a = a + b; // "ab"
        }
    }

    어떻게 내용을 변경할 수 없는 불변의 String클래스가 변경이 되는지에 대해 알아보겠습니다.

    1. 참조 변수 a에는 문자열 리터널 "a"의 주소가 담깁니다. (예: 주소 : 0X100)
    2. 참조 변수 b에는 문자열 리터널 "b"의 주소가 담깁니다. (예: 주소 : 0X200)
    3. 문자열 리터널 "a"와 "b"를 합친 결과는 새로운 문자열 리터널 "ab"가 됩니다. (예: 주소 : 0X300)
    4. 참조 변수 a에 문자열 리터럴 "ab"의 주소(0X300)를 대입합니다.

    내용이 변경되는 게 아니라 새로운 값을 받는 개념이며 이러한 문자열의 덧셈 연산은 성능이 떨어지는 편입니다. 

    이러한 문제를 해결하기 위해 StringBuffer클래스를 사용하는 것이 좋습니다.

    • 문자열의 결합이나 변경이 잦을때 StringBuffer클래스 사용

    2. 리터럴과 생성의 차이

    class StringTest2{
        // str1과 str2의 주소값은 같다.
        String str1 = "abc";
        String str2 = "abc";
        
        // str3와 str4의 주소값은 다르다.
        String str3 = new String("abc");
        String str4 = new String("abc");
    }
    • 문자열 리터널 값이 같다면 참조 변수에 대입되는 주소 값은 모두 같습니다.
    • 새로운 String인스턴스를 생성하는 경우는 각자 다른 인스턴스이기 때문에 주소 값이 다릅니다.

    3. 초기화

    class StringTest3{
        String str1 = ""; // 빈문자열로 초기화
        String str2 = new String(""); // 빈문자열로 초기화
        char c = ' '; // 공백으로 초기화 (최소 공백 1개)
        
        // Java에서는 크기가 0인 배열을 생성하는 것은 어느 타입이나 가능합니다.
        int[] iArr = {};
        char[] chArr = new char[0];
    }
    728x90
    반응형
Designed by Tistory.