public void run(){
int x = 9;
int y = 9;
println( "true or false = " + (x == y) );
println("true or false = " + ( x < y) );
prinltn("true or false = " + (x > y) );
}
在一个例子中,我的书使用println方法中的括号()
来测试某些东西是真还是假。这是我第一次看到()
在println方法中用作布尔测试。以前我曾想过用
if (x == y) {
println("true or false = true");
} else {
println("true or false = false");
}
答案 0 :(得分:2)
还有一个比另一个更正确吗?
正确的并不是描述它的正确术语,因为它们都可以正常工作。唯一的区别是代码行。所以不行。两者都是对的。
我应该避免使用上面的一个例子吗?
不完全是这样,但我建议您尽量缩短代码,以便更容易维护,就像第一个一样。
至于那些println
发生了什么,它只是一个简单的字符串连接:
println("true or false = " + (x == y) );
// true or false = true
答案 1 :(得分:1)
没有。不要回避。使用()
。这不是关于println
内部。它完全是关于字符串连接的。
只是为了进行更改,请尝试执行以下语句并检查结果。
println( "true or false = " + (x == y) );
和
println( "true or false = " +x == y) );
在下面的例子中,运算符优先级出现在图片中。
再次提到,为什么在print方法(x == y)
中使用括号,括号具有高精度,因此它们内部的语句在评估整个表达式之前首先执行。
答案 2 :(得分:1)
当您测试某些内容是否为真时,该条件将成为布尔值(true
或false
)。布尔值可以像其他类型(如int
)一样分配和打印。所以,如果你把:
System.out.println("true or false = " + (x == y));
与做:
相同boolean f = (x==y);
System.out.println("true or false = " + f);
与做:
相同boolean f;
if (x==y) {
f = true;
} else {
f = false;
}
System.out.println("true or false = " + f);
答案 3 :(得分:1)
here()不用于布尔测试,它用于优先级。如果你没有使用()那么第一个x将转换为String然后你不能使用==字符串和整数
(incompatible operand types String and int)
为避免这种情况,我们必须使用()
(x == y)
我建议你先举例说好,它减少行数。
println("true or false = " + (x == y) );
答案 4 :(得分:1)
第一个是可取的,因为它的代码行数相对较少,但这并不意味着另一个代码行不正确。 如果有的话,你想利用在x&amp;上完成的测试的布尔o / p 。要在代码中进一步使用,那么你将不得不去 - &gt;
boolean b=(x==y);
然后&#39; b&#39;从此可以重用。
答案 5 :(得分:0)
试试这个:
String result = (x == y) ? "true" : "false";
System.out.println("true or false = " + result);