Na stronę będę od czasu do czasu dodawał zagadki dla programistów Java. Będą one zawierały różnego rodzaju niuanse języka i „podchwytliwe” fragmenty kodu. Każda następna zagadka będzie zawierała odpowiedź i wyjaśnienie do poprzedniej. Lista wszystkich zagadek
Jeżeli znasz odpowiedź, podziel się nią w komentarzu!
Zagadka Java #1¶
Jaki, oraz dlaczego, będzie wynik kompilacji i uruchomienia każdej z poniższych klas?
public class AssignmentOperator {
public static void main(String[] args) {
int x = 5;
long y = 10;
x = x + y;
System.out.println(x);
}
}
public class CompoundAssignmentOperator {
public static void main(String[] args) {
int x = 5;
long y = 10;
x += y;
System.out.println(x);
}
}
W pierwszym przykładzie otrzymamy błąd ponieważ przypisujemy zmiennej int x nową wartość, która jest sumą int x i long y czyli rzutujemy long na int co może się przyczynić utratą danych.
W drugim przykładzie wykonujemy operację dodawania co w najgorszym przypadku przekręci nam licznik int'a i wynikiem będzie liczba ujemna -2147483644.
Dobry strzał? 🙂
Dobry kierunek, ale w wyjaśnieniu powodu działania drugiej klasy czegoś brakuje 😉