日期:2011-03-22 16:17:00 来源:本站整理
<b>java的逻辑运算符</b>[Java编程]
本文“<b>java的逻辑运算符</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
逻辑运算符AND(&&)、OR(||)以及NOT(!)能生成一个布尔值(true或false)——以自变量的逻辑关系为底子.下面这个例子向大家展示了若何利用关系和逻辑运算符.
//: Bool.java // Relational and logical operators import java.util.*; public class Bool { public static void main(String[] args) { Random rand = new Random(); int i = rand.nextInt() % 100; int j = rand.nextInt() % 100; prt("i = " + i); prt("j = " + j); prt("i > j is " + (i > j)); prt("i < j is " + (i < j)); prt("i >= j is " + (i >= j)); prt("i <= j is " + (i <= j)); prt("i == j is " + (i == j)); prt("i != j is " + (i != j)); // Treating an int as a boolean is // not legal Java //! prt("i && j is " + (i && j)); //! prt("i || j is " + (i || j)); //! prt("!i is " + !i); prt("(i < 10) && (j < 10) is " + ((i < 10) && (j < 10)) ); prt("(i < 10) || (j < 10) is " + ((i < 10) || (j < 10)) ); } static void prt(String s) { System.out.println(s); } } ///:~
只可将AND,OR或NOT利用于布尔值.与在C及C++中差别,不可将一个非布尔值当作布尔值在逻辑表达式中利用.若这样做,就会发现尝试失利,并用一个“//!”标出.但是,后续的表达式操纵关系对比生成布尔值,然后对后果举行逻辑运算.
输出列表看起来象下面这个模样:
i = 85 j = 4 i > j is true i < j is false i >= j is true i <= j is false i == j is false i != j is true (i < 10) && (j < 10) is false (i < 10) || (j < 10) is true
注意若在预计为String值的地方利用,布尔值会自动转换成得当的文本情势.
在上述程序中,可将对int的定义替换成除boolean以外的其他任何主数据范例.但要注意,对浮点数字的对比是非常严峻的.即便一个数字仅在小数部份与另一个数字存在极细小的差别,仍旧认为它们是“不相等”的.即便一个数字只比零大一点点(比方2不断地开平方根),它仍旧属于“非零”值.
1. 短路
操作逻辑运算符时,我们会碰到一种名为“短路”的情形.这意味着只有明确得出整个表达式真或假的结论,才会对表达式举行逻辑求值.因此,一个逻辑表达式的全部部份都有大概不举行求值:
//: ShortCircuit.java // Demonstrates short-circuiting behavior // with logical operators. public class ShortCircuit { static boolean test1(int val) { System.out.println("test1(" + val + ")"); System.out.println("result: " + (val < 1)); return val < 1; } static boolean test2(int val) { System.out.println("test2(" + val + ")"); System.out.println("result: " + (val < 2)); return val < 2; } static boolean test3(int val) { System.out.println("test3(" + val + ")"); System.out.println("result: " + (val < 3)); return val < 3; } public static void main(String[] args) { if(test1(0) && test2(2) && test3(2)) System.out.println("expression is true"); else System.out.println("expression is false"); } } ///:~
每次测试城市对比自变量,并返回真或假.它不会显示与预备调用什么有关的资料.测试在下面这个表达式中举行:
if(test1(0)) && test2(2) && test3(2))
很自然地,你大概认为全部这三个测试城市得以履行.但但愿输出后果不至于使你大吃一惊:
第一个测试生成一个true后果,所以表达式求值会持续下去.但是,第二个测试产生了一个false后果.由于这意味着整个表达式必定为false,所认为什么还要持续剩余的表达式呢?这样做只会徒劳无益.事实上,“短路”一词的由来正种因于此.假如一个逻辑表达式的全部部份都没必要履行下去,那么潜在的性能晋升将是相当可观的.if(test1(0) && test2(2) && test3(2))
以上是“<b>java的逻辑运算符</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:阶段4:校正
- ·下一篇文章:java的关系运算符
- ·中查找“<b>java的逻辑运算符</b>”更多相关内容
- ·中查找“<b>java的逻辑运算符</b>”更多相关内容
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论