Czasami wiesz, że coś jest prawdą, nie tracąc czasu, aby dowiedzieć się wszystkich szczegółów. Na przykład, jeśli ktoś mówi do ciebie: “Wyjdę na zewnątrz, jeśli świeci słońce lub …”, to nie ma znaczenia co jest po LUB -i tak dalej, jak wiesz, że jest słonecznie. Program w Javie robi to samo.
Jednak nie każdy wie, że w Javie mamy dwa rodzaje operatorów AND i OR.
<pre>
public class Logical {
public static boolean getTrue() {
System.out.println("getTrue");
return true;
}
public static boolean getFalse() {
System.out.println("getFalse");
return false;
}
public static void main(String[] args) {
System.out.println("---- Operator OR ----");
// getTrueWykona się tylko raz
System.out.println("1: " + (getTrue() || getTrue()));
// getTrueWykona się dwa razy
System.out.println("2: " + (getTrue() | getTrue()));
// getTrueWykona się dwa razy
System.out.println("3: " + (getTrue() | getTrue() || getTrue()));
System.out.println("---- Operator AND ----");
// getFalse wykona się tylko raz
System.out.println("4: " + (getFalse() && getFalse()));
// getFalse wykona się dwa razy
System.out.println("4: " + (getFalse() & getFalse()));
}
/*
* REZULTAT:
---- Operator OR ----
getTrue
1: true
getTrue
getTrue
2: true
getTrue
getTrue
3: true
---- Operator AND ----
getFalse
4: false
getFalse
getFalse
4: false
*/
}
Tak więc operatory takie jak && oraz || nazywane są czasem operatorami “short-circuit” (ang. zwarcie obwodu)
Natomiast operatory & oraz | są operatorami zwykłymi, które mozolnie liczą wszystkie składniki wyrażenia logicznego.
COMMENTS
No Comments