JAVA

String 클래스

jiyoon12 2025. 4. 26. 14:55
  • 자바에서 문자열을 표현하는데 사용된다.
  • 불면(immutable)객체로, 한번 생성된 문자열은 변경할 수 없다.

String 선언방식

  • 리터럴 방식 : String str1 = "Hello";
  • 문자열 리터럴은 String Constant Pool에 저장되어 재사용된다.
  • new 연산자 사용 : String str2 = new String("Hello");
  • 힙 메모리에 새로운 객체를 생성하며, String Constant Pool과는 별개로 동작한다.

String Constant Pool

  • JVM의 힙 메모리 내에 존재하는 특별한 영역으로, 문자열 리터럴을 저장하고 재사용하여 메모리 효율성을 높인다.
  • 동일한 문자열 리터럴은 String Constant Pool에서 하나의 객체만 생성되고, 모든 변수가 이를 참조한다.

 

package _string;

public class StringTest1 {
    // 변수
    // 생성자
    // 메서드

    // 코드의 진입점
    public static void main(String[] args) {

        // Heap --> (String pool)
        String str1 = "문자열";
        // Heap 메모리에 할당
        String str2 = new String("abc");
        String str3 = new String("abc");

        // 참조 비교 : 각각의 객체의 주소값을 비교한다. 주소 == 주소
        // 21 -> ?
        System.out.println("str2 == str3 : " + (str2 == str3));

        // 문자열을 리터럴 방식으로 만들어 보자.
        // 문자열은 아주 많이 사용되는 데이터이다.
        String str4 = "abc";
        String str5 = "abc";
        String str6 = "abc";


        System.out.println("str4 == str5 : " + (str4 == str5));

        String str7 = str6 + "안녕";
        System.out.println(str7);

    } // end of main
}
package _string;

import _object.Book;

public class StringTest2 {


    // 코드의 진입점
    public static void main(String[] args) {

        // 스트링 객체는 불변이다.
        String str1 = new String("Hello");
        String str2 = new String("world");

        // 원래 객체 주소가 생성되어 있고 내부 변수 값이 변경이 된다면
        // String 클래스는 수정되지 않고 불변이다.
        // 즉 수정이 된다면 새로운 String 객체를 만드는 동작으로 실행된다.

        System.out.println("고유 주소 확인 : " + System.identityHashCode(str1));

        // 문자열 연결 기능 호출해 보기
        str1 = str1.concat(str2);
        System.out.println("수정 이후 고유 주소 확인 : " + System.identityHashCode(str1));

    } // end of main
}
package _string;

public class StringTest3 {

    public static void main(String[] args) {

        String str1 ="ABCD";
        int countStr1 = str1.length();
        System.out.println("countStr1 : " + countStr1);

        // replace 메서드는 문자열 내에서 특정 문자열을 다른 문자나 문자열로 교체하는데
        // 사용할 수 있다.
        String str2 = "HelloWorld";
        String str3 = str2.replace("World","Java");

        System.out.println("str2 : " + str2);
        System.out.println("str3 : " + str3);

        // substring 메서드는 문자열 일부분을 추출하여 새로운 문자열을 반환한다.
        // 두 가지 오버로딩된 메서드를 제공
        // startIndex --> 포함
        // stopIndex --> 불포함
        // 문자열 인덱스 인덱스 0 부터 시작한다.
        String result3 = str2.substring(0,5);
        System.out.println("result3 : " + result3);
    }
}

'JAVA' 카테고리의 다른 글

예외 처리(Exception) - try catch finally  (0) 2025.04.26
StringBuffer 클래스  (0) 2025.04.26
자바 API 문서 확인하기  (0) 2025.04.26
object 클래스와 equals(), hashCode()메서드  (0) 2025.04.26
object 클래스와 toString() 메서드  (0) 2025.04.26