Oracle Certified Associate Java SE 8 Programmer 1 sınavına hazırlanırken, resmi Çalışma Kılavuzunda üçlü ifade ile ilgili aşağıdaki paragrafla karşılaştım:
Üçlü İfade Değerlendirmesi
Java 7'den itibaren, üçlü operatörün sağ el ifadelerinden yalnızca biri çalışma zamanında değerlendirilecektir. Kısa devre operatörlerine benzer bir şekilde, üçlü bir operatördeki iki sağ el ifadesinden biri bir yan etki gerçekleştirirse, çalışma zamanında uygulanmayabilir. Bu prensibi aşağıdaki örnekle açıklayalım: [...]
Aşağıdaki örnekle gösterildiği gibi, iki ifadeden yalnızca birinin değerlendirildiğini söylüyor:
int y = 1;
int z = 1;
int a = y < 10 ? y++ : z++;
Burada, beklediğiniz gibi yalnızca y
artışlar, ancak z
artmaz.
Karşılaştığım şey, "Java 7'den itibaren ..." yazan paragrafın başlangıcı (sarı ile işaretlenmiş). Aynı kodu Java 1.6 ile test ettim ve davranışta bir fark bulamıyorum. Java 1.6'nın her iki ifadeyi de sadece paragrafta verilen bilgilerden değerlendirmesini bekliyordum. "Java 7'den itibaren ..." ile ne söylemek istediği hakkında bir fikri olan var mı?
Düzenleme: Karışıklığı önlemek için: 'Java 7'den itibaren' yazdıkları için Java 6'dan Java 7'ye geçerken üçlü operatörle ilgili değişen herhangi bir şey oldu mu?