반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags more
Archives
Today
Total
관리 메뉴

코딩몬

[Java] String Class 본문

Java/Java 기초

[Java] String Class

탄중이 2021. 10. 20. 19:48
반응형

String Class

String Class는 Java에서 가장 많이 사용하는 Class이다.

 

String Class에서 인스턴스를 생성하는 방법

모든 Class는 new연산자를 이용해야만 인스턴스를 만들어낼 수 있다.

하지만, String Class는 특이하게 new 연산자를 이용해서 / 하지 않고 즉, 두 가지 방식 모두 인스턴스 생성이 가능하다.

 

  • 방법1. new 연산자를 이용하지 않고 인스턴스 생성(리터럴 방식)
String str1 = "hello";
String str2 = "hello";

    - "hello"라는 문자열이 메모리 중에서 상수가 저장되는 영역 즉, constant pool에 저장된다.

    - 두 번째 줄이 실행될 때, str2는 constant pool에 자신에게 할당된 값과 같은 값이 있는지 확인한 후, 있다면 해당

      데이터의 주소값을 갖는다.

    - 결론적으로 str1과 str2는 같은 인스턴스를 참조한다.

 

  • 방법2. new 연산자 이용 인스턴스 생성
 String str3 = new String("hello");
 String str4 = new String("hello");

    - new연산자를 이용하여 인스턴스를 생성하면 heap영역에 값을 저장하기 위한 메모리 할당이 이루어진다.

    - 다시말해 new 1개당 하나의 새로운 메모리 주소값이 생성된다고 볼 수 있다.

    - 즉, new연산자를 이용하여 인스턴스를 만들면 인스턴스는 무조건 새롭게 만들어진다.

    - 결론적으로 str3과 str4는 같은 값이 할당되어있으나, 다른 인스턴스를 참조한다.

 

String Class의 특징

1. 다른 클래스들과 달리 new 연산자를 사용하지 않고도 인스턴스를 생성할 수 있다.

    (메모리를 아끼려면 String 은 new를 사용하지 않는게 좋다.)

2. String Class는 불변 클래스 이다.

    (String 이 가지고 있던 값을 나중에 수정할 수 없다.)

String str5 = "hello world";
String str6 = str5.substring(3);

   : substring()은 문자열을 자른 결과를 반환하는 메소드로, 해당 코드가 실행되어도 str5의 값 자체에는 변함이 없다.

3. String 은 문자열과 관련된 다양한 메소드를 가지고 있으며, 호출한다하더라도 String 내부의 값이 변하지 않는다.

4. String이 가지고 있는 메소드중 String을 반환하는 메소드는 모두 새로은 String을 생성하여 반환한다.

    (str6에는 새로은 String값인 lo가 저장된다.)

반응형
Comments