Ktoś postulował w wątku na forum, że wiele osób, a nawet doświadczonych programistów Java, nie zrozumie następującego spokoju kodu Java.Poufne zachowanie == po postinrementacji
Integer i1 = 127;
Integer i2 = 127;
System.out.println(i1++ == i2++);
System.out.println(i1 == i2);
Jako osoba, która interesuje się Javą, podzieliłem się z nią swoimi przemyśleniami i osiągnąłem następujący rezultat.
System.out.println(i1++ == i2++);
// True, since we first check for equality and increment both variables afterwards.
System.out.println(i1 == i2);
// True again, since both variables are already incremented and have the value 128
Eclipse mówi inaczej. Pierwsza linia jest prawdziwa, a druga jest fałszywa.
Naprawdę doceniam wyjaśnienie.
Drugie pytanie. Czy ta Java jest specyficzna, czy też ten przykład może się utrzymywać na przykład w językach opartych na C?
try 'i1.equals (I2)' – vikingsteve
http://stackoverflow.com/questions/5117132/integer-wrapper-objects-share-the-same-instances-only-within-the-value-127 –
ten Pytanie jest bardzo podobne do tego opublikowanego przez @DominikKunicki –