【问题标题】:Ternary operator behaviour in Sysout [duplicate]Sysout 中的三元运算符行为
【发布时间】:2015-10-24 15:56:12
【问题描述】:

我有以下代码:

boolean prime = true;
System.out.println("Number is"+ prime ? "prime" : "not prime" );

上面的代码给出了编译时错误。 当我将其修改为:

System.out.println("Number is"+ prime==true ? "prime" : "not prime" );

它说“不兼容的操作数类型:字符串和布尔值”。 当我将其修改为

System.out.println(prime? "prime" : "not prime" );

System.out.println(prime==true? "prime" : "not prime" );

完美运行。 这种行为背后的原因是什么。它是否将素数视为 Sysout 中的字符串对象?当我在 Sysout 中使用任何其他字符串时,它无法正常工作。

【问题讨论】:

    标签: java ternary-operator


    【解决方案1】:

    查看运算符优先级:

    http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html

    System.out.println("Number is"+ (prime ? "prime" : "not prime") );
    

    三元运算符具有最低优先级之一,因此在您的情况下它的行为如下:

    System.out.println(("Number is"+ prime) ? "prime" : "not prime" );
    

    这肯定不是你想要的

    【讨论】:

      猜你喜欢
      • 2018-09-18
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 2017-03-05
      • 1970-01-01
      • 2013-10-29
      • 1970-01-01
      相关资源
      最近更新 更多