Java Sysout中的三元运算符行为
我有以下代码:Java Sysout中的三元运算符行为,java,ternary-operator,Java,Ternary Operator,我有以下代码: 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? "
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" );
或
它工作得很好。
这种行为背后的原因是什么。它在Sysout中将prime视为字符串对象吗?当我在Sysout中使用任何其他字符串时,它都无法正常工作。请查看运算符优先级: 三元运算符具有最低优先级之一,因此在您的情况下,它的行为如下:
System.out.println(("Number is"+ prime) ? "prime" : "not prime" );
这肯定不是你想要的
System.out.println("Number is"+ (prime ? "prime" : "not prime") );
System.out.println(("Number is"+ prime) ? "prime" : "not prime" );