1. Type de données logique : boolean
Comme nous l'avons déjà constaté, Java possède un opérateur très utile — if-else. Il exécute un bloc d'instructions si la condition entre parenthèses est vraie, et un second bloc d'instructions si la condition est fausse.
Pour faciliter le travail avec des expressions susceptibles d'être vraies ou fausses, Java propose un type spécial — boolean. Sa principale caractéristique est que les variables de ce type ne peuvent prendre que deux valeurs : true (vrai) et false (faux).
Aucune autre valeur ne peut être attribuée à des variables de type boolean. Le compilateur ne le permettra pas.
Exemples de variables de type boolean :
boolean isAdult = true;
boolean hasMoney = false;
Une variable de type boolean n'a que deux valeurs — true et false. C'est tout ! Presque comme pour un test — soit « réussi », soit « échoué ».
2. Opérations de comparaison
À quoi sert donc un type aussi primitif ? La véritable puissance de boolean se révèle lorsque l'on construit des expressions logiques. Celles-ci se forment généralement à l'aide des opérateurs de comparaison.
| Opérateur | Signification | Exemple | Valeur |
|---|---|---|---|
| == | Égal | |
true ou false |
| != | Différent | |
true ou false |
| > | Supérieur | |
true ou false |
| < | Inférieur | |
true ou false |
| >= | Supérieur ou égal | |
true ou false |
| <= | Inférieur ou égal | |
true ou false |
Exemple :
int age = 20;
boolean isAdult = age >= 18; // true (20 est supérieur ou égal à 18)
boolean isTeenager = age >= 13 && age < 18; // false (20 n'est pas inférieur à 18)
boolean isEven = age % 2 == 0; // true (20 est divisible par 2)
isAdult vaudra ici true, parce que 20 — c'est bien un âge « adulte ».
Point important 1 :
Les opérateurs composés de deux symboles ne doivent pas être séparés.
a < = 10
speed > = max
age = = 18
time ! = 0
Point important 2 :
Notez qu'il n'existe pas d'opérateurs => et =< : seuls <= et >= existent. Si vous écrivez a =< 3, votre code ne se compilera tout simplement pas.
Point important 3 :
En Java, vous ne pouvez pas écrire une expression du type 18 < age < 65. En effet, l'expression 18 < age produit une valeur true ou false. Et on ne peut pas comparer true à un nombre (65) — ce sont des types différents.
3. Opérations logiques
Dans le langage Java, on ne peut pas écrire l'expression 18 < age < 65 — elle sera syntaxiquement incorrecte et le programme ne se compilera pas.
En revanche, on peut l'écrire ainsi :
(18 < age) I (age < 65)
Bien entendu, à la place du mot « ET », on utilise des opérateurs logiques. En Java, il existe trois opérateurs logiques : AND (et), OR (ou) et NOT (non).
Bonne nouvelle : en utilisant des parenthèses, on peut construire des expressions logiques de complexité arbitraire.
Mauvaise nouvelle : en Java, au lieu des mots and, or et not, on utilise des symboles issus de la famille C : &&, ||, !.
| Opérateur logique | Attendu | En réalité |
|---|---|---|
| ET (∧) | and | && |
| OU (∨) | or | || |
| NON (¬) | not | ! |
Voici quelques exemples d'utilisation des opérateurs logiques en Java :
| Expression | Lecture | Explication |
|---|---|---|
|
(0 < a) and (a < 100) | (0 < a) ET (a < 100) |
|
(not a) and (not b) | (NON a) ET (NON b) |
|
not((not a) or (not b)) | NON((NON a) OU (NON b)) |
4. Tables de vérité
Passons rapidement en revue les opérations logiques.
Opérateur AND
L'opérateur AND, aussi appelé ET, également &&, aussi conjonction, également multiplication logique.
| Expression | Résultat |
|---|---|
| true && true | true |
| true && false | false |
| false && true | false |
| false && false | false |
Opérateur OR
L'opérateur OR, aussi appelé OU, également ||, aussi disjonction, également addition logique.
| Expression | Résultat |
|---|---|
| true || true | true |
| true || false | true |
| false || true | true |
| false || false | false |
Opérateur NOT
L'opérateur NOT, aussi appelé NON, également !, aussi négation.
| Expression | Résultat |
|---|---|
| ! true | false |
| ! false | true |
Identités utiles :
| Expression | Résultat |
|---|---|
| m && !m | false |
| m || !m | true |
| !(a && b) | !a || !b |
| !(a || b) | !a && !b |
5. Exemples d'opérations logiques : and, or, not
Opération « ET », AND, est notée &&
Le résultat est vrai uniquement lorsque les deux opérandes sont vrais.
int age = 16;
boolean hasTicket = true;
boolean canAttend = age >= 14 && hasTicket; // true (16 est supérieur à 14 ET un billet est présent)
Si vous avez au moins 14 ans ET que vous avez un billet — vous pouvez entrer !
Opération « OU », OR, est notée (||)
Le résultat est vrai si au moins une condition est vraie.
boolean isAdmin = false;
boolean isModerator = true;
boolean canEdit = isAdmin || isModerator; // true (on peut modifier si au moins l'un des deux est true)
Si vous êtes administrateur OU modérateur — allez-y, appuyez sur les boutons !
Opération « NON », NOT, est notée (!)
L'inverseur transforme le vrai en faux et inversement.
boolean isWeekend = false;
boolean shouldGoToWork = !isWeekend; // true (si ce n'est pas le week-end, on travaille)
Si NON week-end — il est temps de se lever !
Combinaisons : construisez des conditions de n'importe quelle complexité
Vous pouvez combiner autant d'opérations logiques que vous le souhaitez (sans en abuser idéalement). Les parenthèses peuvent (et doivent !) être utilisées pour plus de clarté.
Exemple :
int age = 17;
boolean hasTicket = false;
boolean isVip = true;
boolean canGo = (age >= 18 && hasTicket) || isVip; // true, parce que isVip = true
Logique : si la personne est majeure et a un billet, ou si elle est VIP — on la laisse passer. Si elle n'est pas VIP — uniquement si elle est majeure et avec un billet.
GO TO FULL VERSION