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

13

我不知道Java中问号(?)代表什么,我正在编写一个小程序,一个尼姆游戏。在寻求帮助时,看到了这个语句:

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

我不理解它,?代表什么,它可能与 if 语句有关,但为什么将其放在变量中?: 可能是 "else" 吗?(我刚才说的这些可能非常误导人)


请参见?: - Petr
9个回答

31

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

这被称为三元运算符,可以用作if-else。这等同于

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

请按照教程了解更多信息和用法。


8

它的三元运算符,也被称为条件运算符,可以查看参考资料

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

例如:operand1 ? operand2 : operand3

如果操作数1为真,则返回操作数2,否则返回操作数3 操作数1必须是布尔类型 操作数1可以是求值为布尔类型的表达式 操作数1和操作数2必须是可提升的数字类型或可转换的对象引用,或null 如果operand2或operand3中有一个是byte,另一个是short,则返回值的类型将是short 如果operand2或operand3中有一个是byte、short或char,另一个是适合于其他操作数范围内的常量int值,则返回值的类型将是其他操作数的类型。 否则,应用正常的二进制数字推广 如果operand2或operand3中有一个是null,则返回类型将是另一个操作数的类型。 如果operand2和operand3都是不同的类型,则其中一个必须与另一种类型兼容(可转换) reference

4

它的意思是:

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

它被称为三元运算符。也可以查看这个Java 示例


4

这是一个三元运算符。点击这里查看Oracle文档获取更多信息。简而言之,它是一个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...";

当布尔变量 hello 为 true 时,将字符串 "Hello World!" 赋值给 someString。另一方面,您可以嵌套这些表达式:

boolean hello = true;
boolean world = false;

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

在这种情况下,问候语的值将为"Hello Stranger!"

1

0

"? :" 是一个三元运算符,相当于一个 if else 语句。

以您的示例为例:

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

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


0

它被称为条件运算符。它的工作原理如下。 如果min大于或等于2,则将?后面的第一个值(这里是2)分配给相应的变量,否则将分配第二个值(这里是1)。


0

这个链接会告诉你所有需要知道的。

为了档案保存的目的,这里是摘要:

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

BooleanExpression ? Expr1 : Expr2

评估BooleanExpression。如果它为真,则整个表达式的值为Expr1。如果它为假,则整个表达式的值为Expr2。

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


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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接