Why-String-is-Immutable-in-Java

Tại sao String là Immutable trong Java?

“Tại sao String là Immutable trong Java?” là câu hỏi phỏng vấn phổ biến. String là một trong những class được sử dụng nhiều nhất trong bất kỳ ngôn ngữ lập trình nào. Chúng ta biết rằng String là Immutable và final trong Java. Java runtime duy trì một nhóm chuỗi làm cho nó trở thành một lớp đặc biệt.

LUYỆN THI CHỨNG CHỈ OCA

Tại sao String là Immutable trong Java?

Hãy xem xét một số lợi ích của tính bất biến của chuỗi, điều này sẽ giúp hiểu được lý do tại sao String là Immutable trong Java.

  1. String pool chỉ có thể thực hiện được vì Chuỗi là bất biến trong Java. Bằng cách này, Java Runtime tiết kiệm rất nhiều dung lượng heap vì các biến String khác nhau có thể tham chiếu đến cùng một biến String trong pool. Nếu String không phải là bất biến, thì String interning sẽ không thể thực hiện được vì nếu bất kỳ biến nào thay đổi giá trị, nó cũng sẽ được phản ánh trong các biến khác.
  2. Nếu String không phải là bất biến thì nó sẽ gây ra mối đe dọa bảo mật nghiêm trọng cho ứng dụng. Ví dụ: tên người dùng cơ sở dữ liệu, mật khẩu được chuyển dưới dạng String để nhận kết nối cơ sở dữ liệu và trong máy chủ lập trình socket và chi tiết cổng được chuyển dưới dạng String. Vì String là bất biến nên không thể thay đổi giá trị của nó, nếu không, bất kỳ hacker nào cũng có thể thay đổi giá trị được tham chiếu để gây ra các vấn đề bảo mật trong ứng dụng.
  3. Vì String là bất biến nên nó an toàn cho đa luồng. Một cá thể String duy nhất có thể được chia sẻ trên các chuỗi khác nhau. Điều này tránh việc sử dụng đồng bộ hóa để đảm bảo an toàn cho luồng. Chuỗi hoàn toàn là chuỗi an toàn.
  4. Các chuỗi được sử dụng trong trình tải lớp java và tính bất biến cung cấp bảo mật rằng lớp chính xác đang được tải bởi Classloader. Ví dụ: hãy nghĩ về một trường hợp mà bạn đang cố gắng tải lớp java.sql.Connection nhưng giá trị được tham chiếu được thay đổi thành lớp myhacked.Connection có thể làm những điều không mong muốn đối với cơ sở dữ liệu của bạn.
  5. Vì String là bất biến, mã băm của nó được lưu vào bộ nhớ đệm tại thời điểm tạo và nó không cần phải tính toán lại. Điều này làm cho nó trở thành một ứng cử viên sáng giá cho khóa trong Map và quá trình xử lý của nó nhanh hơn so với các đối tượng khóa HashMap khác. Đây là lý do tại sao String được sử dụng rộng rãi nhất làm khóa HashMap.

Trên đây là một số lý do tôi có thể nghĩ ra cho thấy lợi ích của tính bất biến của chuỗi. Đó là một tính năng tuyệt vời của lớp Chuỗi Java và làm cho nó trở nên đặc biệt.

Happy learning!!!

Học Java Core


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.

Bài viết liên quan

Leave a Reply

Your email address will not be published.

TÀI LIỆU DEV WORLD
Cẩm nang phát triển bền vững với nghề lập trình!