W logicznych nie mamy operatora XOR. Ale używać samych bitowych też nie możemy, bo ~ nie obsługuje boolean.
W związku z tym pytanie: używać {&&, ||, !, } czy może {&, |, !, }. Pewnie powiecie: pierwszego zbioru, ale poprosiłbym o wytłumaczenie wyboru.
0
2
ubuntuser napisał(a):
W logicznych nie mamy operatora XOR.
A!=
?
0
Pierwsze są short-circuit tzn obliczają się do chwili kiedy wynik jest znany. Zresztą ja w ogóle nie bardzo rozumiem to pytanie. Przecież to są zupełnie różne operatory, które służą do różnych rzeczy.
0
Dokładnie. Oba zestawy mają swoje zastosowania. Dzięki temu, że przy &&
mamy krótki obieg (nie jestem pewien jak się to na polski tłumaczy :-p ), to taki kod jest poprawny:
if (obiekt != null && obiekt.isValid()
A taki kod już nie jest:
if (obiekt != null & obiekt.isValid()
Operatora &&
nie da się użyć na typach innych niż boolean
, więc w przypadku ANDowania np intów trzeba posłużyć się operatorem &
.
Oba zestawy operatorów mają także różne priorytety: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html