web-dev-qa-db-ger.com

Was macht "?" in Java bedeuten?

Ich weiß nicht, wofür das Fragezeichen (?) in Java steht, ich habe ein kleines Programm gemacht, ein Nim-Spiel. suchten in einem Buch nach Hilfe und sahen diese Aussage:

int pinsToTake = (min >= 2) ? 2 : 1;

Ich verstehe es nicht. Was wird ? darstellen? Kann es etwas mit der if-Anweisung zu tun haben, aber Sie haben es in eine Variable geschrieben? und der : kann etwas "anderes" sein? (Diese Dinge, die ich gerade gesagt habe, können sehr irreführend sein)

9
Alexein

irgendwann = (min> = 2)? 2: 1;

Dies wird als ternärer Operator bezeichnet, der als if-else verwendet werden kann. das ist äquivalent zu

if((min >= 2) {
   someval =2;
} else {
   someval =1
}

Folgen Sie diesem Tutorial für weitere Informationen und Verwendung.

24

Sein ternary operator wird auch als Bedingter Operator bezeichnet. Schauen Sie mal Referenz

wie Object bar = foo.isSelected() ? getSelected(foo) : getSelected(baz);

z.B. operand1 ? operand2 : operand3

  • wenn operand1 true ist, wird operand2 zurückgegeben, andernfalls wird operand3 zurückgegeben
  • operand1 muss ein Boolescher Typ sein
  • operand1 kann ein Ausdruck sein, der einen booleschen Typ ergibt
  • operand1 und operand2 müssen heraufstufbare numerische Typen oder umsetzbare Objektreferenzen oder null sein
  • wenn einer von Operand2 oder Operand3 ein Byte und der andere ein Kurzschluss ist, ist der Typ des zurückgegebenen Werts ein Kurzschluss
  • wenn einer von Operand2 oder Operand3 ein Byte, Short oder Char ist und der andere ein konstanter int-Wert, der in den Bereich der anderen Operanden passt, ist der Typ des zurückgegebenen Werts der Typ des anderen Operanden
  • andernfalls gilt die normale binäre numerische Heraufstufung
  • wenn einer von Operand2 oder Operand3 eine Null ist, ist der Typ der Rückgabe der Typ des anderen Operanden
  • wenn sowohl operand2 als auch operand3 unterschiedliche Typen sind, muss einer von ihnen mit dem anderen Typ kompatibel (umsetzbar) sein. reference
7
Harmeet Singh

es bedeutet:

if(min >= 2) 
   someval =2;
else 
   someval =1

Es heißt ternärer Operator Siehe dieses Java Beispiel auch

4
CloudyMarble

Das ist ein ternärer Operator. Überprüfen Sie das Oracle-Dokument für weitere Informationen. Kurz gesagt, es handelt sich um eine if-else-Anweisung, die in einer einzelnen Zeile ausgeführt und in Methoden und zum Definieren von Variablenwerten verwendet werden kann.

Syntax:

boolean_expression ? do_if_true : do_if_false;

Parallelität mit if-else-Anweisung:

if(boolean_expression)
    //do_if_true;
else 
    //do_if_false;

Ich habe absichtlich keine Klammern verwendet, da Sie in do_if_true und do_if_false nur eine Codezeile ausführen können.

Anwendungsbeispiel:

boolean hello = true;
String greetings = hello ? "Hello World!" : "No hello for you...";

Dadurch wird someString als "Hello World!" festgelegt, da die boolesche Variable hello den Wert true hat. Auf der anderen Seite können Sie diese Ausdrücke verschachteln:

boolean hello = true;
boolean world = false;

String greetings = hello ? (world ? "Hello World!" : "Hello Stranger!") : "No hello for you...";

In diesem Fall haben Grüße den Wert "Hello Stranger!";

4
Fritz

Es heißt Ternary If operator und ist nur eine Abkürzung für einen if...else

1
codebox

"?:" ist ein ternärer Operator, der einer if else-Anweisung entspricht.

In deinem Beispiel:

   pinsToTake = (min >= 2) ? 2 : 1 

wenn min> = 2, weisen Sie pinsToTake 2 zu, andernfalls weisen Sie pinsToTake 1 zu

0
Razvan
max = (a > b) ? a : b;

(a> b)? a: b; ist ein Ausdruck, der einen von zwei Werten zurückgibt, a oder b.
Die Bedingung (a> b) wird getestet. Wenn dies der Fall ist, wird der erste Wert a zurückgegeben. Wenn es falsch ist, wird der zweite Wert, b, zurückgegeben.
Welcher Wert zurückgegeben wird, hängt von der bedingten Prüfung ab, a> b. Die Bedingung kann ein beliebiger Ausdruck sein, der einen booleschen Wert zurückgibt.

0
Chris Shanks

Es wird bedingter Operator genannt. So funktioniert es. wenn min größer oder gleich 2 ist, dann erster Wert nach? Das ist 2 hier wird der entsprechenden Variablen zugewiesen, andernfalls wird der zweite Wert, der hier 1 ist, zugewiesen.

0
Amrit Pal

Dieser Link wird Ihnen alles sagen, was Sie brauchen.

Zusammenfassung aus Archivierungsgründen:

Es heißt der bedingte Operator. Es ist ein ternärer Operator, der drei Begriffe verwendet:

Boolescher Ausdruck ? Ausdruck1: Ausdruck2

Die BooleanExpression wird ausgewertet. Wenn dies zutrifft, lautet der Wert des gesamten Ausdrucks Ausdr1. Wenn es falsch ist, ist der Wert des gesamten Ausdrucks Ausdr2.

Es hat also den gleichen Zweck wie eine if-Anweisung, ist jedoch eher ein Begriff als eine ganze Anweisung. Das heißt, Sie können es an Stellen einbetten, an denen Sie keine ganze Anweisung verwenden können.

0
Michael A