> Java > java지도 시간 > 본문

Java의 문자열 클래스 란 무엇입니까?

(*-*)浩
풀어 주다: 2019-05-22 14:56:41
원래의
4002명이 탐색했습니다.

Java에서 String 클래스는 매우 자주 사용되는데, 어떤 클래스인지 살펴볼까요?

Java의 문자열 클래스 란 무엇입니까?

String은 불변 객체입니다

java.lang.String 클래스는 최종 수정을 사용하며 상속될 수 없습니다. Java 프로그램의 모든 리터럴 값, 즉 "abc"와 같이 큰따옴표로 묶인 문자열은 String 클래스의 인스턴스로 구현됩니다.

String은 상수이며 일단 생성되면 객체를 변경할 수 없습니다. 즉, String 개체는 변경할 수 없으며 String 값을 수정하는 것처럼 보이는 모든 메서드는 실제로 수정된 문자열 내용을 포함하는 새 String 개체를 만듭니다. 원래 String 객체는 변경되지 않고 그대로 유지됩니다. String 개체는 읽기 전용 특성을 가지며 이를 가리키는 참조는 해당 값을 변경할 수 없습니다. 따라서 다른 참조에 영향을 주지 않습니다. 그러나 문자열 참조는 재할당될 수 있습니다.

Java 문자열은 메모리에서 유니코드 인코딩을 사용합니다. 모든 문자는 2바이트 고정 길이 인코딩에 해당합니다. 즉, 모든 문자(중국어 또는 영어)는 길이가 한 문자로 계산되어 2바이트를 차지합니다.

예:

public class Immutable {
      public static String upcase(String s) {
           return s.toUpperCase();
      }
      public static void main(String[ ] args) {
           String str1= "Hello World";
           System.out.println(str1);  //Hello World
           String str2 = upcase(str1);
           System.out.println(str2);  //HELLO WORLD
           System.out.println(str1);  //Hello World
     }
}
로그인 후 복사

str1이 upcase() 메서드에 전달될 때 실제로 전달되는 것은 참조의 복사본입니다. 실제로 String 개체가 메서드의 매개 변수로 사용될 때마다 참조가 복사되고 참조가 가리키는 개체는 실제로 단일 물리적 위치에 머무르며 이동된 적이 없습니다.

문자열 상수 풀

상수 풀은 컴파일 중에 결정되어 컴파일된 .class 파일에 저장되는 일부 데이터를 나타냅니다. 여기에는 클래스, 메서드, 인터페이스 등의 상수와 문자열 상수가 포함됩니다. Java에서는 성능 향상을 위해 상수 풀에 정적 문자열(리터럴/상수/상수 연결의 결과)을 생성하고 동일한 객체를 사용하고 정적 문자열을 재사용하려고 합니다. 반복되는 문자열 리터럴의 경우 JVM은 먼저 상수 풀에서 검색하고 객체가 상수 풀에 있으면 객체를 반환합니다.

예 2:

public class test1 {
    public static void main(String[] args){
        String str1 = "Hello";
        //不会创建新的String对象,而是使用常量池中已有的"Hello",
        String str2 = "Hello";
        System.out.println(str1 == str2); //true
        //使用new关键字会创建新的String对象
        String str3 = new String("Hello");
        System.out.println(str1 == str3); //false 
    }
}
로그인 후 복사

위 내용은 Java의 문자열 클래스 란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿