Mã sau trong Java sử dụng mảng final
của String
và không có câu hỏi nào về nó.mảng cuối cùng trong Java
final public class Main {
public static final String[] CONSTANT_ARRAY = {"I", "can", "never", "change"};
public static void main(String[] args) {
for (int x = 0; x < CONSTANT_ARRAY.length; x++) {
System.out.print(CONSTANT_ARRAY[x] + " ");
}
}
}
Nó hiển thị kết quả sau trên bảng điều khiển.
I can never change
Các mã sau cũng đi mà không bất kỳ câu hỏi.
final public class Main {
public static final String[] CONSTANT_ARRAY = {"I", "can", "never", "change"};
public static void main(String[] args) {
//CONSTANT_ARRAY={"I", "can", "never", "change"}; //Error - can not assign to final variable CONSTANT_ARRAY.
for (int x = 0; x < CONSTANT_ARRAY.length; x++) {
System.out.print(CONSTANT_ARRAY[x] + " ");
}
}
}
Rõ ràng, dòng nhận xét gây ra lỗi cụ thể bởi vì chúng tôi đang cố gắng để phân công lại các tuyên bố final
mảng kiểu String
.
Còn mã sau đây.
final public class Main {
public static final String[] CONSTANT_ARRAY = {"I", "can", "never", "change"};
public static void main(String[] args) {
CONSTANT_ARRAY[2] = "always"; //Compiles fine.
for (int x = 0; x < CONSTANT_ARRAY.length; x++) {
System.out.print(CONSTANT_ARRAY[x] + " ");
}
}
}
và nó sẽ hiển thị I can always change
có nghĩa là chúng ta có thể quản lý để sửa đổi giá trị của final
mảng kiểu String
. Chúng ta có thể sửa đổi toàn bộ mảng theo cách này mà không vi phạm quy tắc của final
không?
Bạn nói _object_, và đó là tốt này áp dụng cho mọi đối tượng, không chỉ là mảng Đó là tốt để sửa đổi đối tượng mà là.. Ví dụ, 'cuối cùng Danh sách danh sách = new ArrayList (); list.add (" foo ");'. –