Mempersiapkan ujian Oracle Certified Associate Java SE 8 Programmer 1, saya menemukan paragraf berikut tentang ekspresi terner di Panduan Studi resmi:
Evaluasi Ekspresi Ternary
Pada Java 7, hanya satu ekspresi kanan dari operator terner yang akan dievaluasi saat runtime. Dengan cara yang mirip dengan operator hubung singkat, jika salah satu dari dua ekspresi tangan kanan di operator terner melakukan efek samping, maka itu tidak dapat diterapkan pada waktu proses. Mari kita ilustrasikan prinsip ini dengan contoh berikut: [...]
Dikatakan bahwa hanya satu dari dua ekspresi yang dievaluasi, didemonstrasikan dengan contoh berikut:
int y = 1;
int z = 1;
int a = y < 10 ? y++ : z++;
Di sini, hanya y
kenaikan, tetapi z
tidak, seperti yang Anda harapkan.
Apa yang saya temukan adalah awal dari paragraf (ditandai dengan warna kuning) di mana dikatakan "As of Java 7, ...". Saya menguji kode yang sama dengan Java 1.6 dan saya tidak dapat menemukan perbedaan dalam perilakunya. Saya berharap Java 1.6 mengevaluasi kedua ekspresi hanya dari informasi yang diberikan dalam paragraf. Adakah yang tahu apa yang ingin mereka katakan dengan "As of Java 7, ..."?
Sunting: Untuk menghindari kebingungan: Itu intinya pada pertanyaan, Karena mereka menulis 'Pada Java 7', apakah ada sesuatu yang berubah tentang operator terner, ketika beralih dari Java 6 ke Java 7?