java 逻辑运算符的优先顺序顺序

知识点4:Java语言中的逻辑运算符_百度文库java解析逻辑表达式(执行逻辑运算符的字符串)
public class JieXi
& public static void main(String[] args) throws
Exception {
String str = "(a or b) and c";
str = str.replaceAll("or", "||");
str = str.replaceAll("and", "&&");
System.out.println(str);
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
engine.put("a",true);
engine.put("b",false);
engine.put("c",true);&&&&&&&&
Object result = engine.eval_r(str);
System.out.println("结果类型:" + result.getClass().getName() + ",计算结果:"
+ result);
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。JAVA 逻辑运算符的运算顺序的误解 -
- ITeye博客
博客分类:
先看下运算的代码:
boolean test3=true||true&&
boolean test5=false&&true||true
System.out.println("test3="+test3);
System.out.println("test5="+test5);
是谁像我一样把 test3 算成 false的?
结果:
test3=true
test5=true
下面来解释下:
大家都知道短路的说法吧。
1.逻辑与(&&),如果第一个操作数为false,那么结果肯定false,所以在这种情况下,将不会执行逻辑与后面的运算了,即发生了短路。
2.逻辑或(||),如果第一个操作数为ture,那么结果肯定是ture,所以在这种情况下,将不会执行逻辑与后面的运算了,即发生了短路。
关于短路注意:
一旦能够明确无误地确定整个表达式的值,就不会再计算表达式剩余的部分了。注意一定要是明确无误地确定整个表达式的值才会短路。
像上面的情况:既有&&又有||这个时候就不会短路,而是按照优先级进行运算。&&是先于||所以&&的先运算,而局部运算也会走短路逻辑。
例如:
boolean test2=false&&5/0&0||(结果为:test2=false)
5除以0 ,明显被除数为0会报错,而此时运行确没有报错,就是因为逻辑与短路。
而反过来
boolean test2=true&&5/0&0||
就会报被除数为0错误。
总结:
逻辑运算符运算是,如果明确无误地确定整个表达式的值,就会走“短路”逻辑,而如果比较复杂的话就会按照优先级进行运算,而局部运算也会用到短路逻辑。
运算符优先级参考:
http://blog.csdn.net/xiaoli_feng/article/details/4567184
浏览: 10175 次
来自: 北京java逻辑运算符与位运算符 - 趁着年轻多学点…… - ITeye博客
博客分类:
一. 与、或、非、异或运算
与 0&&0 =0 1&&0 =0 0&&1 =0
1&&1 =1 或 0||0 =0 1||0 =1 0||1 =1 1||1 =1 非(求反) ~1 =0 ~0 =1 异或真^假=真 假^真=真 假^假=假 真^真=假
进行与或以及异或运算,结果分别是:
二、位运算符
“&& 右移”;“&& 左移”;“&&& 无符号右移”
注意:右移相当于是除,左移相当于就是乘,左移一位乘以2,左移二位乘以4,依此类推。
无论正数、负数,它们的右移、左移、无符号右移32位都是其本身,比如 -5&&32=-5、-5&&32=-5、-5&&&32=-5
如:-5&&3=-1
System.out.println(a&&33);
按照常理推测,把a左移33位应该将a的所有有效位都移出去了,那剩
下的都是零啊,所以输出结果应该是0才对啊, 可是执行后发现输出结果是10,为什么呢?因为Java语言对位移运算作了优化处理,Java语言对a&&b转化为a&&(b%32) 来处理,所以当要移位的位数b超过32时,实际上移位的位数是b%32的值,那么上面的代码中a&&33相当于a&&1,所以输 出结果是10.
浏览 10512
浏览: 48074 次
来自: 深圳
这个是用了组件 要是不用组件 呢?下载的文件是固定的! 我觉得 ...
tyra 写道
我是80 末了,这17 条除了第6条,其余全有 ...
我是80 末了,这17 条除了第6条,其余全有,嘿嘿}

我要回帖

更多关于 java的逻辑运算符 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信