Java中的“?”是什么意思?

我不知道java中的问号( ? )代表什么,我正在做一个小程序,一个Nim游戏。 正在寻找一本书,寻求帮助并看到这句话:

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

我不明白,会是什么? 代表,它可以与if语句有关但你把它放在变量中吗? 并且:可以是“其他”的东西? (我刚才说的这些事情可能会非常误导)

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

这称为三元运算符,可以像if-else 。 这相当于

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

请阅读本教程以获取更多信息和用法。

它的ternary operator也称为条件运算符 ,有一个参考

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

例如。 operand1 ? operand2 : operand3

  • 如果operand1为true,则返回operand2,否则返回operand3
  • operand1必须是布尔类型
  • operand1可以是一个求值为布尔类型的表达式
  • operand1和operand2必须是可升级的数字类型或可转换对象引用,或者为null
  • 如果operand2或operand3中的一个是一个字节而另一个是short,则返回值的类型将为short
  • 如果operand2或operand3中的一个是byte,short或char而另一个是一个常量int值,它将适合其他操作数范围,则返回值的类型将是另一个操作数的类型
  • 否则,正常的二进制数字促销适用
  • 如果operand2或operand3之一为null,则返回的类型将是另一个操作数的类型
  • 如果operand2和operand3都是不同的类型,则其中一个必须与另一个类型引用兼容(可转换)

它的意思是:

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

它被称为三元运算符也参见这个java 示例

那是三元运营商。 查看Oracle的doc以获取更多信息。 简而言之,它是一个if-else语句,可以在一行中完成并在方法内部使用并定义变量值。

句法:

 boolean_expression ? do_if_true : do_if_false; 

与if-else语句并行:

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

我没有故意使用括号,因为你只能在do_if_truedo_if_false执行一行代码。

使用示例:

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

这会将someString设置为"Hello World!" 因为布尔变量hello计算结果为true。 另一方面,您可以嵌套此表达式:

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

在这种情况下,问候将具有"Hello Stranger!"的值"Hello Stranger!" ;

它被称为Ternary If运算符 ,它只是if...else简写

“?:”是一个等价于if else语句的三元运算符。

在你的例子中:

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

如果min> = 2则将2分配给pinsToTake,否则分配1

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

(a> b)? a:b; 是一个表达式,它返回两个值a或b中的一个。
测试条件(a> b)。 如果为真,则返回第一个值a。 如果为false,则返回第二个值b。
无论返回哪个值取决于条件测试,a> b。 条件可以是返回布尔值的任何表达式。

它被称为条件运算符。这就是它的工作原理。 如果min大于或等于2,那么之后的第一个值是多少? 这里的2将被分配给相应的变量,否则这里的第二个值将被赋值。

此链接将告诉您所需的一切。

档案摘要摘要:

它被称为条件运算符。 这是一个三元运算符,需要三个术语:

BooleanExpression? Expr1:Expr2

对BooleanExpression进行了评估。 如果是,则整个表达式的值为Expr1。 如果为false,则整个表达式的值为Expr2。

因此它与if语句具有相同的目的,但它是一个术语而不是整个语句。 这意味着您可以将其嵌入到无法使用整个语句的位置。