Unterschied zwischen & und && in Java? [duplicate]
Lesezeit: 3 Minuten
Mxyk
Mögliche Duplikate:
Was ist der Unterschied zwischen | und || auf Java?
Unterschied zwischen & und &&
Ich habe mich nur gefragt, was der Unterschied zwischen ist & und && ist?
Vor ein paar Tagen schrieb ich eine Bedingung für eine if Aussage, die in etwa so aussah:
if(x < 50 && x > 0)
Allerdings habe ich die geändert && zu einfach & und es zeigte keine fehler. Was ist der Unterschied?
Beispiel: Ich habe dieses einfache Programm kompiliert:
package anddifferences;
public class Main {
public static void main(String[] args) {
int x = 25;
if(x < 50 && x > 0) {
System.out.println("OK");
}
if(x < 50 & x > 0) {
System.out.println("Yup");
}
}
}
Es druckte “OK” und “Yup”. Ist es also egal, welches ich verwende, wenn beide funktionieren?
(Nicht exakt die gleiche Frage, aber der Unterschied zwischen & und && ist das gleiche wie der Unterschied zwischen | und ||.)
– Stefan C
26. August 11 um 3:25 Uhr
hier ist ein älterer: P stackoverflow.com/questions/4014535/vs-and-vs
– Paul Bellora
26. August 11 um 3:28 Uhr
Ich schätze also, die neue Frage lautet: Woher weiß ich, ob ich & vs. && wählen soll? Ich verstehe, dass && die zweite Bedingung genau dann überprüft, wenn die erste wahr ist (im Vergleich zu &, die beide automatisch überprüft), aber was ist der Vorteil, wenn man eine der beiden vorzieht?
– Mxyk
26. August ’11 um 12:00 Uhr
@Mike Gates dies ist ein praktisches Beispiel if(x!=null && x.length>0) … wenn wir hier & anstelle von && verwenden würden, würden wir für den Fall, dass x null ist, eine NullPointerException erhalten, die Verwendung von && verhindert dies, denn wenn x null ist, wird x.length nie aufgerufen.
– default_avatar
31. Oktober 13 um 14:50 Uhr
&& ist kurzgeschlossen.
– huuthang
7. Dezember 17 um 4:19 Uhr
Jeffrey
& ist bitweise. && ist logisch.
& wertet beide Seiten der Operation aus. && wertet die linke Seite der Operation aus, falls ja true, fährt sie fort und wertet die rechte Seite aus.
Gute Antwort. Viel vollständiger als “logisch und bitweise”, was jemandem, der diese Frage beantwortet, nicht viel sagt.
– notbad.jpeg
24. September 12 um 18:47 Uhr
& ist nicht bitweise, wenn die Operanden boolesche Werte sind. Nur wenn sie integral sind.
– Benutzer207421
30. November 13 um 9:27 Uhr
@EJP Eigentlich, &ist bitweise für boolean Operanden. Beide Seiten werden die Operation noch evaluieren.
– Jeffrey
30. November 13 um 16:06 Uhr
Jeffrey, ‘bitwise’ bedeutet nicht ‘wertet beide Operanden aus’. Es bedeutet „arbeitet an jedem Bit separat“.
– Benutzer207421
30. November 13 um 20:11 Uhr
@JohnP Das ändert nichts an der Tatsache, dass using & oder | mit einer boolean wird als bitweise Operation betrachtet. EIN booleanist ein Bit, die Tatsache, dass seine Implementierung 4 oder 8 Bytes Speicher beanspruchen kann, ist etwas willkürlich.
– Jeffrey
26. Februar 14 um 20:47 Uhr
Anzug
& ist ein bitweiser UND-Operator, der die Bits jedes Operanden vergleicht.
Beispielsweise,
int a = 4;
int b = 7;
System.out.println(a & b); // prints 4
//meaning in an 32 bit system
// 00000000 00000000 00000000 00000100
// 00000000 00000000 00000000 00000111
// ===================================
// 00000000 00000000 00000000 00000100
&& ist ein logischer UND-Operator, der nur boolesche Werte von Operanden vergleicht. Es nimmt zwei Operanden, die einen booleschen Wert angeben, und führt eine faule Auswertung an ihnen durch.
& ist nicht bitweise, wenn die Operanden boolesche Werte sind. Nur wenn sie integral sind.
& ist nicht bitweise, wenn die Operanden boolesche Werte sind. Nur wenn sie integral sind.
– Benutzer207421
30. November 13 um 9:27 Uhr
MP.
‘&’ führt beide Tests durch, während ‘&&’ den 2. Test nur durchführt, wenn der erste auch wahr ist. Dies wird als Kurzschließen bezeichnet und kann als Optimierung betrachtet werden. Dies ist besonders nützlich beim Schutz vor Nullheit (NullPointerException).
if( x != null && x.equals("*BINGO*") {
then do something with x...
}
.
5855800cookie-checkUnterschied zwischen & und && in Java? [duplicate]yes
(Nicht exakt die gleiche Frage, aber der Unterschied zwischen
&
und&&
ist das gleiche wie der Unterschied zwischen|
und||
.)– Stefan C
26. August 11 um 3:25 Uhr
hier ist ein älterer: P stackoverflow.com/questions/4014535/vs-and-vs
– Paul Bellora
26. August 11 um 3:28 Uhr
Ich schätze also, die neue Frage lautet: Woher weiß ich, ob ich & vs. && wählen soll? Ich verstehe, dass && die zweite Bedingung genau dann überprüft, wenn die erste wahr ist (im Vergleich zu &, die beide automatisch überprüft), aber was ist der Vorteil, wenn man eine der beiden vorzieht?
– Mxyk
26. August ’11 um 12:00 Uhr
@Mike Gates dies ist ein praktisches Beispiel if(x!=null && x.length>0) … wenn wir hier & anstelle von && verwenden würden, würden wir für den Fall, dass x null ist, eine NullPointerException erhalten, die Verwendung von && verhindert dies, denn wenn x null ist, wird x.length nie aufgerufen.
– default_avatar
31. Oktober 13 um 14:50 Uhr
&& ist kurzgeschlossen.
– huuthang
7. Dezember 17 um 4:19 Uhr