Unterschied zwischen & und && in Java? [duplicate]

Lesezeit: 3 Minuten

Unterschied zwischen und in Java duplicate
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

Unterschied zwischen und in Java duplicate
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 boolean ist 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

1642828026 784 Unterschied zwischen und in Java duplicate
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.

    – Benutzer207421

    30. November 13 um 9:26 Uhr


&& == logisches UND

& = bitweises UND

  • Lesen Sie mehr über das bitweise @ en.wikipedia.org/wiki/Bitwise_operation

    – Buch des Zeus

    26. August 11 um 3:20 Uhr

  • & ist nicht bitweise, wenn die Operanden boolesche Werte sind. Nur wenn sie integral sind.

    – Benutzer207421

    30. November 13 um 9:27 Uhr

1642828026 574 Unterschied zwischen und in Java duplicate
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...
}

.

585580cookie-checkUnterschied zwischen & und && in Java? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy