Computer >> Máy Tính >  >> Lập trình >> Java

Tại sao lớp String là bất biến hoặc cuối cùng trong Java?


Chuỗi là bất biến có nghĩa là chúng ta không thể thay đổi chính đối tượng, nhưng chúng ta có thể thay đổi tham chiếu đến đối tượng. Chuỗi được làm cuối cùng để không cho phép người khác mở rộng và phá hủy tính bất biến của nó.

  • Bảo mật Các tham số thường được biểu thị dưới dạng Chuỗi trong kết nối mạng, URL kết nối cơ sở dữ liệu, tên người dùng / mật khẩu, v.v. Nếu có thể thay đổi, các tham số này có thể được thay đổi dễ dàng.
  • Đồng bộ hóa và Đồng tiền tự động làm cho chuỗi không thay đổi được làm cho chuỗi an toàn, do đó giải quyết các vấn đề đồng bộ hóa.
  • Bộ nhớ đệm khi trình biên dịch tối ưu hóa các đối tượng Chuỗi của chúng tôi, có vẻ như nếu hai đối tượng có cùng giá trị (a ="test" và b ="test") và do đó chúng tôi chỉ cần một đối tượng chuỗi (cho cả a và b, hai đối tượng này sẽ trỏ cho cùng một đối tượng).
  • Đang tải lớp Chuỗi được sử dụng làm đối số để tải lớp. Nếu có thể thay đổi, nó có thể dẫn đến việc tải sai lớp (vì các đối tượng có thể thay đổi thay đổi trạng thái của chúng).

Ví dụ:

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());
   }
}

Đầu ra:

The hascode of st1 = -594386763
The hascode of st2 = 77292912
The Hashcode after st1 is changed : 962735579