web-dev-qa-db-fra.com

Différence entre & et && en Java?

Doublons possibles:
Quelle est la différence entre | et || en Java?
Différence dans & et &&

Je me demandais simplement quelle était la différence entre et et && ?
Il y a quelques jours, j'ai écrit une condition pour une déclaration if qui ressemblait à quelque chose comme:

if(x < 50 && x > 0)

Cependant, j'ai changé le && en juste & et il n'y avait aucune erreur . Quelle est la différence?


Exemple: j'ai compilé ce programme simple:

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");
        }
    }
}

Il a imprimé "OK" et "Yup". Alors, est-ce important que j'utilise si les deux fonctionnent?

149
Mxyk

& est au niveau du bit. && est logique.

& évalue les deux côtés de l'opération.
&& évalue le côté gauche de l'opération. S'il s'agit de true, il continue et évalue le côté droit.

363
Jeffrey

& est au niveau du bit opérateur AND qui compare les bits de chaque opérande.
Par exemple,

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


&& est un opérateur logique AND comparant uniquement les valeurs booléennes d'opérandes. Il faut deux opérandes indiquant une valeur booléenne et les évaluer paresseux.

70
suat

&& == ET logique

& = bitwise ET

42
Book Of Zeus

'&' effectue les deux tests, tandis que '&&' n'effectue le second test que si le premier est également vrai. Ceci est connu sous le nom de court-circuit et peut être considéré comme une optimisation. Ceci est particulièrement utile pour se prémunir contre la nullité (NullPointerException).

if( x != null && x.equals("*BINGO*") {
  then do something with x...
}
32
mP.