我正在尝试编写if
语句,检查3个数字是否都大于20(例如)。
这是我认为可行的:
x = 30;
y = 40;
z = 60;
if ((x&y&z) > 20) {
System.out.println("true");
}
可悲的是,它并不是那样的。任何人都可以帮助我吗?
注意:我知道你可以做到
if (blabla && blabla && blabla) {
我只是想要一个更快的方式。
答案 0 :(得分:3)
如果通过更快你意味着更快打字,那么我认为你运气不好。但请注意
x > 20 && y > 20 && z > 20
是短路的,所以你真的无法提高效率,因为无论如何你必须对每个变量进行至少一次比较。
此外,仅仅为了您自己的个人启蒙,&
是bitwise-AND运算符,当与整数参数一起使用时(正如您使用它),它是非短路逻辑AND操作员与布尔值一起使用。
答案 1 :(得分:0)
没有比#34; blabla"更快的方式来写下来了。如果您要比较的数字远远超过3个,那么您将使用一些循环。但我猜你已经知道了。
另请注意,单个&
的含义与&&
不同。
答案 2 :(得分:0)
你写的这句话毫无意义,因为整数不能真正与一个&签署以确定三者中哪一个更大。 (除非你故意使用比特级别,我相信情况并非如此)。
如果你想让它成为一个布尔表达式(也就是说,只使用>一次),我建议你这样做:
if(Math.min(x,Math.min(y,z))> 20){ ... }
不确定3个单独的布尔值会短多少。
编辑: 忘了说,就运行时间而言,这当然比3布尔效率低得多。但是,如果它只是比较你想要的3个整数而你并不关心它的效率(因为实际上,它不像你在大多数情况下可以看出差异),这可行。
编辑2: 澄清了第一句话的意思。