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

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

WBOY
WBOY앞으로
2023-08-20 22:05:091019검색

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으로 문의하시기 바랍니다. 삭제