> Java > java지도 시간 > 본문

Java에서 String 클래스가 불변이거나 최종인 이유는 무엇입니까?

WBOY
풀어 주다: 2023-08-20 22:05:09
앞으로
1011명이 탐색했습니다.

Java에서 String 클래스가 불변이거나 최종인 이유는 무엇입니까?

문자열이 변경 불가능하다는 것은 객체 자체는 변경할 수 없지만 객체에 대한 참조는 변경할 수 있다는 의미입니다. 문자열은 다른 사람이 확장하여 불변성을 파괴할 수 없도록 최종적으로 만들어집니다.

  • 보안 매개변수는 일반적으로 네트워크 연결, 데이터베이스 연결 URL, 사용자 이름/비밀번호 등에서 문자열로 표시됩니다. 변경 가능한 경우 이러한 매개변수는 쉽게 변경할 수 있습니다.
  • 동기화 및 동시성 String을 불변으로 만들면 자동으로 스레드로부터 안전해지며 동기화 문제가 해결됩니다.
  • Caching 컴파일러가 String 객체를 최적화할 때 두 객체가 동일한 값(a =" test" 및 b =" test") 따라서 하나의 문자열 객체만 필요합니다(a와 b 모두에 대해 이 두 객체는 ​​동일한 객체를 가리킵니다).
  • 클래스 로딩 문자열은 클래스의 인수로 사용됩니다. 로딩. 변경 가능한 경우 잘못된 클래스가 로드될 수 있습니다(변경 가능한 객체가 상태를 변경하기 때문에).

예:

public class StringImmutableDemo {
   public static void main(String[] args) {
      String st1 = "Tutorials";
      String st2 = "Point";
      System.out.println("The hascode of st1 = " + st1.hashCode());
      System.out.println("The hascode of st2 = " + st2.hashCode());
      st1 = st1 + st2;
      System.out.println("The Hashcode after st1 is changed : "+ st1.hashCode());
   }
}
로그인 후 복사

输출:

The hascode of st1 = -594386763
The hascode of st2 = 77292912
The Hashcode after st1 is changed : 962735579
로그인 후 복사

위 내용은 Java에서 String 클래스가 불변이거나 최종인 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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