การเตรียมตัวสำหรับการสอบ Oracle Certified Associate Java SE 8 Programmer 1 ฉันพบย่อหน้าต่อไปนี้เกี่ยวกับนิพจน์ด้านท้ายในคู่มือการศึกษาอย่างเป็นทางการ:
การประเมินนิพจน์ Ternary
ณ Java 7 นิพจน์ทางขวามือเดียวของตัวดำเนินการ ternary จะได้รับการประเมินที่รันไทม์ ในลักษณะที่คล้ายกับตัวดำเนินการลัดวงจรหากหนึ่งในสองนิพจน์ขวามือในตัวดำเนินการที่เกี่ยวข้องมีผลข้างเคียงก็อาจไม่สามารถใช้ในรันไทม์ได้ ขอยกตัวอย่างหลักการนี้ด้วยตัวอย่างต่อไปนี้: [... ]
มันบอกว่ามีการประเมินเพียงหนึ่งในสองนิพจน์โดยแสดงให้เห็นด้วยตัวอย่างต่อไปนี้:
int y = 1;
int z = 1;
int a = y < 10 ? y++ : z++;
ที่นี่y
เพิ่มขึ้นเท่านั้นแต่z
ไม่เป็นไปตามที่คุณคาดหวัง
สิ่งที่ฉันสะดุดคือจุดเริ่มต้นของย่อหน้า (ทำเครื่องหมายด้วยสีเหลือง) ซึ่งมีข้อความว่า "As of Java 7, ... " ฉันทดสอบโค้ดเดียวกันกับ Java 1.6 และไม่พบความแตกต่างในลักษณะการทำงาน ฉันคาดว่า Java 1.6 จะประเมินนิพจน์ทั้งสองจากข้อมูลที่ระบุในย่อหน้า ใครมีความคิดที่อยากจะพูดกับ "As of Java 7, ... " บ้าง?
แก้ไข:เพื่อหลีกเลี่ยงความสับสน: คำถามนี้ทำให้เกิดคำถามเนื่องจากพวกเขาเขียนว่า 'As of Java 7' มีอะไรเปลี่ยนแปลงเกี่ยวกับตัวดำเนินการ ternary เมื่อเปลี่ยนจาก Java 6 เป็น Java 7 หรือไม่?