2
Final vs Final อย่างมีประสิทธิภาพ - พฤติกรรมที่แตกต่างกัน
จนถึงตอนนี้ฉันคิดว่าขั้นสุดท้ายและขั้นสุดท้ายที่มีประสิทธิผลนั้นเทียบเท่ากันไม่มากก็น้อยและ JLS จะปฏิบัติต่อสิ่งเหล่านี้เหมือนกันหากไม่เหมือนกันในพฤติกรรมจริง จากนั้นฉันพบสถานการณ์ที่สร้างขึ้นนี้: final int a = 97; System.out.println(true ? a : 'c'); // outputs a // versus int a = 97; System.out.println(true ? a : 'c'); // outputs 97 เห็นได้ชัดว่า JLS สร้างความแตกต่างที่สำคัญระหว่างทั้งสองที่นี่และฉันไม่แน่ใจว่าทำไม ฉันอ่านกระทู้อื่น ๆ เช่น ความแตกต่างระหว่างขั้นสุดท้ายและขั้นสุดท้ายอย่างมีประสิทธิผล ตัวแปรสุดท้ายเทียบกับตัวแปรสุดท้ายอย่างมีประสิทธิภาพ ตัวแปรที่เป็น "ขั้นสุดท้ายอย่างมีประสิทธิภาพ" หมายความว่าอย่างไร แต่ไม่ได้ลงรายละเอียดดังกล่าว ท้ายที่สุดแล้วในระดับที่กว้างขึ้นพวกเขาดูเหมือนจะเทียบเท่ากันมาก แต่การขุดลึกลงไปเห็นได้ชัดว่าพวกเขาต่าง อะไรเป็นสาเหตุของพฤติกรรมนี้ใครสามารถให้คำจำกัดความ JLS ที่อธิบายสิ่งนี้ได้บ้าง แก้ไข: ฉันพบสถานการณ์อื่นที่เกี่ยวข้อง: …