Exemple :
class OperateursLog{ public static void main(String[] args){ boolean a=true; boolean b=false; System.out.println(a&&b); System.out.println(a||b); boolean c=(a&&!b)||(b&&!a); System.out.println(c); } }
Essayer d'appliquer un opérateur logique à des types autres que boolean renvoie une erreur de compilation. Cela arrive souvent involontairement à cause d'erreurs de syntaxe.
Par exemple
public class ExErreurs{ public static void main(String[] args) { int a=5; int b=10; boolean c=(a<b)&&(b=10); } }Ce code source donne une erreur de compilation, pourquoi?
Remarque : les parenthèses sont ici facultatives car les comparaisons sont prioritaires sur les opérateurs logiques, mais elles sont conseillées pour la clarté de lecture du code.
Les opérateurs binaires réalisent une opération logique bit par bit entre les deux opérandes, tels qu'ils sont codés en binaire. Ces opérateurs servent par exemple à effectuer des opérations de masquage ou de transparence.
package initial; public class OperateursBaB { public static void main(String[] args) { // TODO Auto-generated method stub ConsoleTexte mc=new ConsoleTexte(); mc.ecritLn(2|4); mc.ecritLn(85&42); mc.ecritLn(31^10); } }Pour comprendre les résultats obtenus, il faut écrire les opérandes en base 2.
Les opérateurs binaires s'appliquent à tous les types numériques entiers, aux caractères( char), et entre booléens (ils donnent alors le même résultat que leurs équivalents logiques) .
Un exemple où le programme "devine" le nombre que vous avez choisi :
package initial;
public class Magique {
public static void main(String[] args) {
ConsoleTexte mc=new ConsoleTexte();
mc.ecritLn("Choisis une lettre et un nombre entier inférieur à 256 et indique-moi la lettre");
String lu=mc.getDonnees();
char a=lu.charAt(0);
mc.ecrit("Effectue un OU-Exclusif binaire entre ton entier et ");
mc.ecrit((int)a);
mc.ecritLn(" et donne-moi le résultat.");
int resultat=(int)mc.getValeur();
mc.ecrit("Le nombre entier était ");
mc.ecritLn(resultat^a); ou-ex bit par bit entre un entier et un caractère
mc.ecrit("sauf si tu as fait une erreur, parce que moi je ne me trompe jamais.");
}
}
(L'astuce est l'utilisation de la propriété (A ou-ex B) ou-ex B = A. Le nombre à deviner pourrait être bien plus grand que 127 mais les conversions base 2-base 10 deviendraient pénibles pour l'utilisateur ! )
Pour compléter cette panoplie d'opérateurs permettant de manipuler les digits, on dispose aussi des opérateurs de décalage vers la gauche ou vers la droite , << et >>.