Avez-vous entendu parler d'un court-circuit (évaluation de court-circuit)?
[Opérateur logique] tel que "<< Côté gauche >> << Opérateur logique >> << Côté droit >>" (https://ja.wikipedia.org/wiki/%E8%AB%96%E7%90%86%E6 % BC% 94% E7% AE% 97% E5% AD% 90) Supposons qu'il existe une expression (expression d'opérateur logique). L'évaluation de court-circuit consiste à évaluer le côté droit (deuxième argument) uniquement lorsque la valeur de l'expression entière n'est pas déterminée au stade de l'évaluation du côté gauche (premier argument). Évaluation de court-circuit-Wikipedia
L'opérateur de court-circuit de Java est||
Quand&&
Est applicable.
Un opérateur logique qui signifie "et" ou "ou" utilisé lors de l'exécution d'opérations logiques.
Expliquons en détail ce que cela signifie.
La méthode isEmpty vérifie l'argument de type String et renvoie la valeur booléenne comme résultat de la vérification.
La condition à vérifier est «soit un caractère nul, soit un caractère vide», mais l'opérateur logique qui signifie «ou» est l'opérateur de court-circuit.||
est.
private static boolean isEmpty(String str) {
if (str == null || str.isEmpty()) {
return true;
}
return false;
}
Si l'argument str passé à isEmpty est nul, le résultat de l'évaluation du côté gauche str == null
sera true
.
Étant donné que le résultat de l'évaluation sur le côté gauche est "true", le résultat de l'évaluation de l'instruction if ne change pas, que le résultat de l'évaluation du côté droit "str.isEmpty ()" soit "true" ou "false".
Par conséquent, l'évaluation du côté droit est inutile et l'évaluation elle-même n'est pas exécutée. Le processus d'évaluation est ignoré.
Si l'argument str n'est pas nul, par exemple, le côté droit doit être évalué et str.isEmpty ()
est exécuté.
Lorsque les résultats de l'évaluation des deux côtés sont confirmés par les résultats de l'évaluation du côté gauche, ** le court-circuit (évaluation du court-circuit) ** n'effectue pas d'évaluation inutile du côté droit.
||
Pour les opérateurs, évalue si le côté gauche ou droit est vrai.
Si le côté gauche est vrai, le côté droit n'est pas évalué car le résultat de l'évaluation ne peut pas être autre chose que vrai selon le côté droit.
Si le côté gauche est faux, le résultat de l'évaluation est vrai si le côté droit est vrai, et s'il est faux, le résultat de l'évaluation est faux, donc le côté droit doit également être évalué.
L'opérateur &&
évalue si les côtés gauche et droit sont vrais.
Si le côté gauche est faux, le côté droit n'est pas évalué car le résultat de l'évaluation ne peut pas être autre chose que faux selon le côté droit.
Si le côté gauche est vrai, le résultat de l'évaluation est vrai si le côté droit est vrai, et s'il est faux, le résultat de l'évaluation est faux, donc le côté droit doit également être évalué.
L'opérateur logique calcule le résultat de l'évaluation en combinant les évaluations du côté droit et du côté gauche. Cependant, en utilisant l'opérateur de court-circuit, il est possible d'en évaluer un seul, c'est-à-dire de simplifier le traitement lors de l'exécution.
Si l'argument str passé à isEmpty dans l'exemple de code est nul, le côté droit str.isEmpty ()
ne sera pas exécuté.
Autrement dit, une NullPointerException ne se produit pas lors de l'évaluation de l'instruction if.
Mais que faire si vous échangez les côtés gauche et droit?
private static boolean isEmpty(String str) {
if (str.isEmpty() || str == null) {
return true;
}
return false;
}
Une NullPointerException se produit lorsque le côté gauche str.isEmpty ()
est évalué.
Lors du codage, il peut être nécessaire de prendre en compte l'ordre d'évaluation du côté gauche et du côté droit de cette manière.
Opérateur logique||
Quand&&
がショートサーキットである意識がない場合、左辺の評価によって右辺の評価自体が行われないこQuandも意識できません。
Opérateurs logiques Java||
Quand&&
はショートサーキットであるこQuandを意識してのコーディングが必要です。
Fondamentalement en tant qu'opérateur logique en Java||
Quand&&
を使用するQuand思いますが、ショートサーキットではない、左辺Quand右辺を必ず評価する論理演算子も存在します。|
Quand&
est.
C'est ce qu'on appelle l'opérateur d'évaluation complète. Elle est également appelée évaluation booléenne complète ou évaluation logique complète.
J'écris Java depuis quelques années, mais je ne l'ai jamais utilisé. C'est toujours une prémisse de court-circuit.
Cependant, cela est limité aux langues qui ont des opérateurs de court-circuit, et inversement, certaines langues n'ont pas d'opérateurs de court-circuit. C'est vrai pour VBA. Évaluez toujours les deux côtés.
Voici un exemple d'implémentation de la méthode isEmpty dans VBA sans l'opérateur de court-circuit, mais vous devez approfondir l'imbrication pour éviter les exceptions.
Dans un tel langage, si vous ne revenez pas avec un retour anticipé comme dans l'exemple ci-dessous et faites attention à ne pas sortir de la méthode, l'imbrication deviendra plus profonde et la lisibilité diminuera ...
À propos, dans VBA, il n'y a pas de valeur NULL dans le type de chaîne de chaîne (Len (vbNullString)
result est 0
,vbNullString = ""
result est True
, Null
et ʻEmpty` sont pour le type Variant uniquement. ), Type de collection.
Function IsEmpty(ByVal list As Collection) As Boolean
IsEmpty = True
If list Is Nothing Then
' null(Etat)dans le cas de
Exit Function
End If
If list.Count = 0 Then
'Lorsque le nombre d'éléments est égal à 0
Exit Function
End If
IsEmpty = False
End Function
Recommended Posts