【问题标题】:What does "?" mean in Java? [duplicate]“?”是什么意思?在Java中是什么意思? [复制]
【发布时间】:2012-08-13 22:11:15
【问题描述】:

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

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

我不明白,? 代表什么,它可以与 if 语句有关,但你把它放在一个变量中? : 可以是“其他”吗? (我刚才说的这件事很容易误导)

【问题讨论】:

  • ?:

标签: java ternary-operator conditional-operator


【解决方案1】:

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

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

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

关注tutorial 了解更多信息和用法。

【讨论】:

  • 为什么谢谢你,先生!
  • @Alexein:不用谢,accept :-)
【解决方案2】:

它的ternary operator也称为条件运算符,看看reference

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

例如。 operand1 ? operand2 : operand3

  • 如果operand1为真,则返回operand2,否则返回operand3
  • operand1 必须是布尔类型
  • operand1 可以是计算结果为布尔类型的表达式
  • operand1 和operand2 必须是可提升的数字类型或可转换的对象引用,或者为空
  • 如果operand2或operand3中的一个是字节,另一个是short,则返回值的类型将是short
  • 如果操作数 2 或操作数 3 之一是字节、短或字符,而另一个是常量 int 值,将适合其他操作数 范围,返回值的类型将是另一个的类型 操作数
  • 否则,将应用正常的二进制数字提升
  • 如果操作数 2 或操作数 3 之一为空,则返回的类型将是另一个操作数的类型
  • 如果操作数 2 和操作数 3 都是不同的类型,则其中一个必须与另一种类型兼容(可转换) reference

【讨论】:

    【解决方案3】:

    意思是:

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

    它被称为ternary operator 也看到这个 java example

    【讨论】:

      【解决方案4】:

      这是一个三元运算符。 Check Oracle's 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 的计算结果为真。另一方面,你可以嵌套这个表达式:

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

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

      【讨论】:

        【解决方案5】:

        它叫做Ternary If operator,只是if...else的简写

        【讨论】:

          【解决方案6】:

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

          在你的例子中:

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

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

          【讨论】:

            【解决方案7】:
            max = (a > b) ? a : b;
            

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

            【讨论】:

              【解决方案8】:

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

              【讨论】:

                【解决方案9】:

                This link 会告诉你所有你需要的。

                存档摘要:

                它被称为条件运算符。这是一个三元运算符 取三个词:

                布尔表达式? Expr1 : Expr2

                计算布尔表达式。如果是真的,价值 整个表达式是 Expr1。如果为假,则为整体的值 表达式为 Expr2。

                所以它的用途与 if 语句相同,但它是 术语而不是整个陈述。这意味着您可以将其嵌入 不能使用完整语句的地方。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-10-27
                  • 2015-07-15
                  • 2018-07-17
                  • 2011-04-16
                  • 2019-09-12
                  • 2015-01-22
                  • 1970-01-01
                  相关资源
                  最近更新 更多