Theo thông số kỹ thuật:
15,26 khai thác Phân Có 12 nhà khai thác chuyển nhượng; tất cả đều liên kết cú pháp đúng (chúng nhóm từ phải sang trái). Như vậy, a = b = c nghĩa là a = (b = c), gán giá trị của c cho b và sau đó gán giá trị của b cho a.
Vì vậy, a[i] = i = 9;
cũng giống như i = 9; a[i] = i;
Sửa
Trên thực tế, đó không phải là trường hợp. Mẫu lớp thử nghiệm:
import java.util.Arrays;
public class Mkt {
public static void main(String[] args) {
int[] a = new int[10];
int i = 5;
a[i] = i = 9;
System.out.println(Arrays.toString(a));
}
}
mẫu chạy:
$ javac Mkt.java && java Mkt
[0, 0, 0, 0, 0, 9, 0, 0, 0, 0]
Vui lòng tham khảo the other answer để biết thêm thông tin. Về cơ bản:
a[i] = i = 9
cũng giống như a[i] = (i = 9)
, như =
là phải kết hợp
Tuy nhiên, toán hạng đánh giá được từ trái sang phải, theo this:
15,7.Thứ tự đánh giá
Ngôn ngữ lập trình Java đảm bảo rằng toán hạng của toán tử xuất hiện để được đánh giá theo thứ tự đánh giá cụ thể, cụ thể là từ trái sang phải.
Chúng tôi khuyên rằng mã không nên dựa chủ yếu vào đặc điểm kỹ thuật này. Mã thường rõ ràng hơn khi mỗi biểu thức chứa tối đa một hiệu ứng phụ, như hoạt động ngoài cùng của nó và khi mã không phụ thuộc vào chính xác ngoại lệ nào phát sinh như là hệ quả của việc đánh giá các biểu thức từ trái sang phải.
Tôi đã sao chép đoạn thứ hai rất hữu ích ở đây - hiếm khi viết mã khó hiểu như vậy có ý nghĩa.
Tôi cũng tìm thấy số séc this đáng giá.
Nguồn
2012-02-25 03:22:56
Cảm ơn bạn Tom, điều này có ý nghĩa. – HSeldon