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 😉