Oui, c'est une forme abrégée de
int count;
if (isHere)
count = getHereCount(index);
else
count = getAwayCount(index);
C'est ce qu'on appelle le opérateur conditionnel . Beaucoup de gens l'appellent (à tort) l'opérateur ternaire parce que c'est le seul opérateur ternaire (à trois arguments) en Java, C, C++ et probablement dans de nombreux autres langages. Mais théoriquement, il existe pourrait être un autre opérateur ternaire, alors qu'il ne peut y avoir qu'un seul opérateur conditionnel .
Le nom officiel est donné dans le Spécification du langage Java :
§15.25 Opérateur conditionnel ? :
L'opérateur conditionnel ? :
utilise la valeur booléenne d'une expression pour décider laquelle des deux autres expressions doit être évaluée.
Notez que les deux branches doivent mener à des méthodes avec des valeurs de retour :
C'est une erreur de compilation si la deuxième ou la troisième expression opérande est une invocation d'une méthode void.
En fait, selon la grammaire des déclarations d'expression ( §14.8 ), il n'est pas permis qu'une expression conditionnelle apparaisse dans un contexte où l'invocation d'une méthode void pourrait apparaître.
Donc, si doSomething()
y doSomethingElse()
sont des méthodes nulles, vous ne pouvez pas les compresser :
if (someBool)
doSomething();
else
doSomethingElse();
dans ceci :
someBool ? doSomething() : doSomethingElse();
Des mots simples :
booleanCondition ? executeThisPartIfBooleanConditionIsTrue : executeThisPartIfBooleanConditionIsFalse
2 votes
Voir aussi stackoverflow.com/questions/795286/what-does-do-in-c pour la version C++ de cette question (posée hier, en fait).
2 votes
Gardez à l'esprit que le monde C/C++/Java est divisé de manière assez égale entre les personnes qui pensent que c'est laid et confus et qui l'éviteront comme la peste, et les personnes qui pensent que vous ne pouvez pas vraiment prétendre connaître C, C++ ou Java si vous ne pouvez pas le reconnaître et l'utiliser sans prendre le temps de réfléchir.
3 votes
En Java, il est généralement mal vu de l'utiliser en dehors des cas les plus clairs et les plus simples. Si vous vous retrouvez à les imbriquer, vous êtes loin du compte. En revanche, dans la culture C, où le code rapide et intelligent est plus apprécié que la clarté, il est considéré comme acceptable.
20 votes
Answer_to_question = (recognize_operator) ? (acceptation_sociale) : (agitation_de_doigts_condescendante)
0 votes
Vous pouvez vous référer este pour plus d'informations.