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: