Opérateurs logiques, partie 3
Fait partie de la section Fondamentaux du Journey Java de Coddy — leçon 25 sur 73.
Lors de la vérification de plusieurs conditions, l'ordinateur arrête de vérifier dès qu'il connaît la réponse finale (cela s'appelle l'évaluation à court-circuit).
Par exemple :
int x = 0;
int y = 5;
boolean result = x != 0 && y / x > 2;Ici, x vaut 0, par conséquent cela n'évaluera pas y / x > 2. Si nous inversions l'ordre :
boolean result = y / x > 2 && x != 0;Cela entraînera une erreur parce que y sera divisé par 0, ce qui est illégal en mathématiques.
Cette technique est utilisée pour optimiser l'évaluation des expressions logiques. Par exemple :
int a = 0;
int b = 2;
int c = 3;
int d = 5;
boolean result = (a > 0 && b < 2) || (c < -5 && d < 10);Dans cet exemple, b < 2 et d < 10 ne seront pas évalués car a > 0 et c < -5 sont tous deux faux.
Défi
DébutantCréons un programme pour décider si c'est une bonne journée pour la production d'énergie des panneaux solaires
Initialisez ces variables :
isSunnyavec la valeur truewindSpeedavec la valeur 5.4temperatureavec la valeur 23solarPanelOutputavec la valeur 9isCloudyavec la valeur false
Créez une expression logique qui vérifie TOUTES ces conditions :
- C'est ensoleillé
- La vitesse du vent est inférieure à 10
- La production des panneaux solaires est inférieure à 15
- La température est supérieure à 20 OU il n'y a pas de nuages
Aide-mémoire
Java utilise l'évaluation à court-circuit lors de la vérification de plusieurs conditions - elle arrête l'évaluation dès que le résultat final est déterminé.
Avec && (ET), si la première condition est fausse, la seconde ne sera pas évaluée :
int x = 0;
int y = 5;
boolean result = x != 0 && y / x > 2; // y / x > 2 n'est pas évaluéAvec || (OU), si la première condition est vraie, la seconde ne sera pas évaluée :
int a = 0;
int b = 2;
int c = 3;
int d = 5;
boolean result = (a > 0 && b < 2) || (c < -5 && d < 10);
// b < 2 et d < 10 ne sont pas évaluésCette optimisation évite les calculs inutiles et peut éviter les erreurs d'exécution comme la division par zéro.
Essayez vous-même
public class Main {
public static void main(String[] args) {
// Initialiser les variables
// L'expression logique complète
boolean result =
// Ne supprimez pas les lignes ci-dessous
System.out.println("Checking conditions for solar energy production...");
System.out.println("1. Is it sunny? " + isSunny);
System.out.println("2. Is wind speed safe? " + (windSpeed < 10));
System.out.println("3. Can panels produce more? " + (solarPanelOutput < 15));
System.out.println("4. Is temperature good OR no clouds? " + (temperature > 20 || !isCloudy));
System.out.println("\nFinal result - Good day for solar energy production: " + result);
}
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloIncrémentation / DécrémentationPost-incrémentation / Post-décrémentationRaccourcis arithmétiquesOpérateurs de comparaisonComparaison de chaînes7Entrées/Sorties de base
Méthodes System.outFormatage de la sortieClasse ScannerRécapitulatif - Jusqu'à 120Récapitulatif - Vrai ou Faux10Méthodes (Fonctions)
Déclaration de méthodesParamètres de méthodeTypes de retourSurcharge de méthodesRécapitulatif - Fonction SigmaRécapitulatif - Fonction de validationMéthodes Void13Opérations sur les chaînes
Méthodes de chaînes, partie 1Méthodes de chaînes, partie 2Formatage de chaînesComparaison de chaînes5Opérateurs, partie 2
Opérateurs logiques, partie 1Opérateurs logiques, partie 2Récapitulatif - Logique simpleOpérateurs logiques, partie 3Opérateurs logiques, partie 43Variables Partie 2
ConstantesConventions de nommageRécapitulatif - Initialisation des variablesType Casting Partie 1Type Casting Partie 26Prise de décision
Instruction IfIf - ElseInstruction SwitchOpérateur ternaireRécapitulatif - If ElseIf - Else imbriqués9Boucles
Boucle For - Partie 1Boucle WhileBoucle Do WhileBreakContinueBoucle For - Partie 2Boucles imbriquéesBoucle infinieRécapitulatif - Entrée dynamique12Parcourir les tableaux
Utilisation de la boucle forBoucle for amélioréeOpérations courantes sur les tableaux