Cela fait un moment que je suis en train d'apprendre Java et j'apprends encore de nouvelles astuces de syntaxe. Je suis tombé sur ceci dans le code source Android:
boolean retry = id == 1;
Qu'est-ce que ça veut dire?
retry
est true
si id
a la valeur 1, sinon retry
est false
.
id == 1
est une expression booléenne qui est vraie si id
est égale à 1
et false sinon.
boolean retry = id == 1;
déclare une variable booléenne nommée retry
et attribue la valeur de l'expression booléenne id == 1
à cette variable.
Donc, il déclare une variable booléenne qui vaut true si id == 1
et false sinon.
Pour le rendre un peu plus clair, vous pourriez l'écrire de cette façon:
boolean retry = (id == 1);
C'est pareil que
boolean retry;
if (id == 1)
retry = true;
else
retry = false;
==
, qui est le prédicat d'égalité, a une priorité supérieure à =
, qui est l'opérateur d'affectation.
Par conséquent, id == 1
est évalué en premier, puis sa valeur (true ou false) est attribuée à retry
.
La tentative booléenne obtient la valeur true si id == 1
.
C'est pareil que:
boolean retry;
if (id == 1) {
retry = true;
} else {
retry = false;
}
tout d'abord, la variable id
est évaluée avec 1, si bien que id
est une integer
.
Ensuite, la valeur retry
est affectée à cette évaluation. Par conséquent, si id
est égal à 1, retry
deviendra true
et toute autre valeur de id
retry
deviendra false
.
Je trouve que le simple fait d'utiliser parens aide à dissiper la confusion derrière des déclarations complexes comme celle-ci.
boolean retry = (id == 1);
me semble beaucoup plus logique. Ici, il est clair que (id == 1)
est une expression en cours d'évaluation et que le résultat est affecté à boolean retry
Il s’agit d’une opération ternaire, (x) ? true : false
en C, C++, C #, etc .;
La syntaxe similaire:
boolean retry = (id == 1)? true: false;
Ou cela peut être écrit autrement:
boolean retry;
if (id == 1) {
retry = true;
} else {
retry = false;
}
Cette ligne crée une variable booléenne et la définit sur true
si id
est égal à 1 et false
si ce n'est pas le cas.
Il serait peut-être plus facile de voir ce qui se passe si vous le regardez comme ceci:
boolean retry = (id == 1);
Donc, fondamentalement, il vérifie si id est égal à 1, puis assigne le résultat à la nouvelle tentative.
C'est fondamentalement la même chose que retry = (id == 1)
. Il évalue l'expression booléenne et l'assigne à retry
.
retry
assigne une expression qui sera vraie ou fausse car retry
est une boolean
. De plus, ==
sera résolu en premier, puis il sera attribué à retry
.
C'est une façon de définir une variable booléenne.
Lorsque id
est 1
, la valeur de retry
sera true
.
La variable booléenne retry
aura la valeur 0
ou 1
selon que l'expression id==1
renvoie true
ou false
.
Si la valeur de id
est 1
, alors id==1
correspondra à true
, donc retry=1
.
Et si la valeur de id
est 0
, alors id==1
correspondra à false
, donc retry=0
.
Veuillez noter que ==
est un opérateur de comparaison.
Le code peut écrire comme ça, alors il sera compris facilement, tu crois. Enfin, merci de donner la chance de répondre à la question!
boolean retry = (id == 1);