Jeżeli znasz odpowiedź, podziel się nią w komentarzu!
Zagadka Java #9¶
Czy poniższe klasy się skompilują? Jeżeli tak, to jaki będzie efekt ich uruchomienia? Metoda Math.random zwraca losową wartość typu double z przedziału <0.0, 1.0).
public class TernaryOperator1 { public static void main(String[] args) { double d = Math.random(); int x = d > 0.5 ? 1 : "prawda"; System.out.println(x); } }
public class TernaryOperator2 { public static void main(String[] args) { double d = Math.random(); var x = d > 0.5 ? 0 : "prawda"; System.out.println(x); } }
public class TernaryOperator3 { public static void main(String[] args) { double d = Math.random(); System.out.println(d > 0.5 ? 0 : "prawda"); } }
Odpowiedź do poprzedniej zagadki #8¶
Poniżej znajdziesz odpowiedź do poprzedniej zagadki.
Przed wersją Java 14, próba kompilacji klasy SwitchExpression zakończyłaby się niepowodzeniem. Kompilator protestowałby z powodu treści metody isWeekend. Metoda ta korzysta z nowej funkcjonalności języka Java, wprowadzonej do niego w wersji 14 (chociaż była ona dostępna w wersjach 12 i 13 jako funkcjonalność „preview”). Mam tutaj na myśli wyrażenia switch. Do tej pory mogliśmy korzystać z instrukcji switch. Od wersji Java 14, switch może być traktowane jako wyrażenie, które ma pewną wartość. Korzystamy z tej funkcjonalności w metodzie isWeekend – bezpośrednio zwracamy wartość, którą będzie miało poniższe wyrażenie switch:
switch (dayNumber) { case 6, 7 -> true; default -> false; };
Dodatkowo, korzystamy z nowej składni:
case wartość -> zwracana_wartość;
Podsumowując, klasa SwitchExpression skompiluje się bez błędów, a na ekranie zobaczymy: