web-dev-qa-db-fra.com

Java: booléen dans println (booléen? "Print true": "print false")

Je suis tombé sur cette syntaxe:

System.out.println(boolean_variable ? "print true": "print false");
  • Quelle est cette syntaxe à deux points: appelée? 
  • Où puis-je trouver des informations à ce sujet?
  • Cela fonctionne-t-il uniquement pour les booléens ou est-il mis en œuvre de différentes manières?
15
Luther

? : est l'opérateur conditionnel . (Ce n'est pas seulement la partie : - l'ensemble de l'argument de méthode est une utilisation de l'opérateur conditionnel dans votre exemple.)

On l'appelle souvent l'opérateur ternaire, mais ce n'est qu'un aspect de sa nature - avoir trois opérandes - plutôt que son nom. Si un autre opérateur ternaire est jamais introduit en Java, le terme deviendra ambigu. C'est ce qu'on appelle l'opérateur conditionnel car il possède une condition (le premier opérande) qui détermine ensuite lequel des deux autres opérandes est évalué.

Le premier opérande est évalué, puis soit le deuxième ou le troisième opérande est évalué selon que le premier opérande est vrai ou faux ... et que cela aboutit à l'opérateur.

Donc, quelque chose comme ça:

int x = condition() ? result1() : result2();

est à peu près équivalent à:

int x;
if (condition()) {
    x = result1();
} else {
    x = result2();
}  

Il est important que (pas} _ évalue l'autre opérande. Donc, par exemple, c'est bien:

String text = getSomeStringReferenceWhichMightBeNull();
int usefulCharacters = text == null ? 0 : text.length();
54
Jon Skeet

Il s'agit de l'opérateur conditionnel, souvent appelé opérateur ternaire, car il comporte 3 opérandes: voici un exemple:

int foo = 10;
int bar = foo > 5 ? 1 : 2; // will be 1
int baz = foo > 15 ? 3 : 4; // will be 4

Ainsi, si l'expression boolean est évaluée à true, elle renverra la première valeur (avant les deux points), sinon la deuxième valeur (après les deux points).

Vous pouvez lire les détails dans Spécification de langage Java, Chapitre 15.25 Opérateur conditionnel ?

20
jlordo

C'est un opérateur ternaire, ce qui signifie qu'au lieu d'avoir deux opérandes, comme beaucoup d'autres, il en a trois. Wikipedia sur le fonctionnement ternaire et comment il est utilisé dans Java . En gros, l'opération booléenne (ou simplement une variable) est évaluée. Si la valeur est true, l'opérateur renvoie la valeur/exécute le code avant le :, sinon le code qui le suit.

4
SBI

C'est une déclaration si.

Que reste-t-il à gauche? est la condition, qu'y a-t-il entre? et: est le résultat si la condition est vraie et ce qui est à droite de: est le résultat si la condition est fausse.

2
Casteurr

C'est l'opérateur ternary ( http://en.wikipedia.org/wiki/? :). Il peut être utilisé n’importe où lorsque vous avez besoin d’une petite expression if.

2
TulaGingerbread

Pour vos questions:

  1. Le ?: (les deux caractères ensemble) est appelé opérateur conditionnel (ou opérateur ternaire). Seuls les deux ensemble fonctionneront.
  2. Rechercher un opérateur Java ternery
  3. Cela ne fonctionne que pour les booléens

En principe, l’opérateur de ternery est une if/else raccourcie. boolean sera la condition pour if, la partie entre ? et : est la branche if et la partie suivante est la branche else.

Veuillez noter que le type de retour de l'opérateur conditionnel est déterminé par la première branche .

2
Uwe Plonus

Son opérateur ternaire.

L'opérateur ternaire ou?, Est un raccourci si else. Il peut être utilisé pour évaluer une expression et renvoyer l'un des deux opérandes en fonction du résultat de l'expression.

boolean b = true;
String s = ( b == true ? "True" : "False" );

Cela définira la valeur de la chaîne s en fonction de la valeur du booléen b. Cela pourrait être écrit en utilisant une déclaration if else comme ceci:

boolean b = true;
String s;
if(b == true){
    s = "True";
}else{
    s = "False";
}
1
Manish Doshi

C'est l'opérateur ternaire qui fonctionne avec des booléens. Il peut être utilisé comme un raccourci pour if-else dans certains cas, mais ne devrait pas être utilisé pour des choses trop compliquées car il peut être difficile à lire.

Un exemple serait d’assigner une valeur à une variable en fonction d’une condition:

String message = doOperation() ? "Success" : "Error occurred";
System.out.println(message);

Dans ce cas, si doOperation renvoie un booléen indiquant s'il a réussi ou non, le message à afficher peut être affecté sur une seule ligne.

Veuillez noter que cet exemple ne représente pas de bonnes pratiques de programmation.

1
Kayaman

C'est une forme abrégée de déclaration if-else.

Cela fonctionne de cette façon

(yourCondition ? STATEMENT1 : STATEMENT2)
  • Le compilateur vérifie la condition.
  • IF il retourne TRUE puis STATEMENT1 sera exécuté.
  • ELSESTATEMENT2 sera exécuté.
1
R9J

Le point d'interrogation suivi de deux points est un opérateur ternaire généralement appelé inline if.

Dans ce cas, il retourne une chaîne en fonction de la valeur de boolean_variable.

http://en.wikipedia.org/wiki/%3F :

0
Brecht Yperman

Voir ici . L'opérateur ternaire est similaire à une expression if, mais il diffère en ce qu'il s'agit d'une expression: il a une valeur de retour, alors que si les expressions ne le sont pas. Parfois, vous souhaitez l'utiliser pour rendre votre code un peu moins encombré.

0
kutschkem