Chuẩn bị cho kỳ thi 1 Lập trình viên Java SE 8 được chứng nhận Oracle Certified Associate, tôi đã xem qua đoạn văn sau về biểu thức bậc ba trong Hướng dẫn ôn tập chính thức:
Đánh giá
biểu thức bậc ba Kể từ Java 7, chỉ một trong các biểu thức bên phải của toán tử bậc ba sẽ được đánh giá trong thời gian chạy. Theo cách tương tự như các toán tử ngắn mạch, nếu một trong hai biểu thức bên phải trong toán tử bậc ba thực hiện một hiệu ứng phụ, thì nó có thể không được áp dụng trong thời gian chạy. Hãy minh họa nguyên tắc này bằng ví dụ sau: [...]
Nó nói rằng chỉ một trong hai biểu thức được đánh giá, chứng minh bằng ví dụ sau:
int y = 1;
int z = 1;
int a = y < 10 ? y++ : z++;
Ở đây, chỉ số y
gia tăng, nhưng z
không, như bạn mong đợi.
Những gì tôi tình cờ gặp là đầu đoạn văn (được đánh dấu màu vàng) có nội dung "Kể từ Java 7, ...". Tôi đã thử nghiệm mã tương tự với Java 1.6 và tôi không thể tìm thấy sự khác biệt trong hành vi. Tôi mong đợi Java 1.6 đánh giá cả hai biểu thức chỉ từ thông tin được đưa ra trong đoạn văn. Có ai biết họ muốn nói gì với "Như Java 7, ..." không?
Chỉnh sửa: Để tránh nhầm lẫn: Câu hỏi tóm tắt là, Vì họ viết 'Kể từ Java 7', có điều gì thay đổi liên quan đến toán tử bậc ba, khi chuyển từ Java 6 sang Java 7 không?