java短路问题
java短路问题
短路运算符就是我们常用的“&&”、“||”,一般称为“条件操作”。
class Logic{
public ststic void main(String[] args){
int a=1;
int b=1;
if(a<b && b<a/0){
System.out.println("Oh,That's Impossible!!!");
}else{
System.out.println("That's in my control.");
}
}
}
“&&”运算符检查第一个表达式是否返回“false”,如果是“false”则结果必为“false”,不再检查其他内容。
“a/0”是个明显的错误!但短路运算“&&”先判断“a<b”,返回“false”,遂造成短路,也就不进行“a/0”操作了,程序会打出"That's in my control."。这个时候,交换一下“&&”左右两边的表达式,程序立即抛出异常“java.lang.ArithmeticException: / by zero”。
class Logic{
public ststic void main(String[] args){
int a=1;
int b=1;
if(a==b || b<a/0){
System.out.println("That's in my control.");
}else{
System.out.println("Oh,That's Impossible!!!");
}
}
}
“||”运算符检查第一个表达式是否返回“true”,如果是“true”则结果必为“true”,不再检查其他内容。
“a/0”是个明显的错误!但短路运算“||”先执行“a==b”判断,返回“true”,遂造成短路,也就不进行“a/0”操作了,程序会打出"That's in my control."。这个时候,交换一下“||”左右两边的表达式,程序立即抛出异常“java.lang.ArithmeticException: / by zero”。
非短路运算符包括 “& 与”、“| 或”、“^ 异或”,一般称为“逻辑操作”
class Logic{
public ststic void main(String[] args){
int a=1;
int b=1;
if(a<b & b<a/0){
System.out.println("Oh,That's Impossible!!!");
}else{
System.out.println("That's in my control.");
}
}
}
“&”运算符不会造成短路,它会认认真真的检查每一个表达式,虽然“a<b”已经返回“flase”了,它还是会继续检查其他内容,以至于最终抛出异常“java.lang.ArithmeticException: / by zero”。
class Logic{
public ststic void main(String[] args){
int a=1;
int b=1;
if(a==b | b<a/0){
System.out.println("That's in my control.");
}else{
System.out.println("Oh,That's Impossible!!!");
}
}
}
同理,“|”运算符也不会造成短路,虽然“a==b”已经返回“true”了,它还是会继续检查其他内容,以至于最终抛出异常“java.lang.ArithmeticException: / by zero”。
“^”运算符道理是一样的,就不在这里罗索了。
最后。短路运算符只能用于逻辑表达式内,非短路运算符可用于位表达式和逻辑表达式内。也可以说:短路运算只能操作布尔型的,而非短路运算不仅可以操作布尔型,而且可以操作数值型。
解决原理
&是java中的位逻辑运算:
eg: 2&3=2;
分析如下:
2的二进制为10 ;3的二进制为11 ; 逻辑&之后为10
&&是boolean的逻辑运算
eg:
if((1> 2)&&(3> 1) )
表示如果两个条件都成立则执行之后的逻辑;
| 逻辑或
eg. A|B,会对A, B都进行判断
||短路或
eg.A||B,只有当A为假的时候才会对B进行判断.若A为真,则不继续对B进行判断.
java短路问题的更多相关文章
- Java短路运算符和非短路运算符
在Java中短路运算符指的是"&&"(与) 和"||"(或) ,非短路运算符指的是"&" 和"|" ...
- java 短路与(||)时报错The operator || is undefined for the argument type(s) int, boolean
今天在使用短路与时,报错The operator || is undefined for the argument type(s) int, boolean 代码如下: 最后发现是少了一个=,比较要使 ...
- Shell 初步学习
Shell 概述 Shell:Linux命令解释器 脚本执行方式 chmod 755 脚本名:赋权限(调用必须显示的使用绝对路径或相对路径) bash 脚本名:通过Bash调用执行脚本 命令别名 al ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- Java开发笔记(十五)短路逻辑运算的优势
前面提到逻辑运算只能操作布尔变量,这其实是不严谨的,因为经过Java编程实现,会发现“&”.“|”.“^”这几个逻辑符号竟然可以对数字进行运算.譬如下面的代码就直接对数字分别开展了“与”.“或 ...
- java &&与||短路的详解
短路运算符就是我们常用的“&&”.“||”,一般称为“条件操作”. class Logic{ public ststic void main(String[] args){ ...
- java入门---运算符&逻辑运算符&短路逻辑运算符&赋值运算符&条件运算符&instanceof 运算符
这篇文章接着上次的来,主要看逻辑运算符&短路逻辑运算符&赋值运算符&条件运算符&instanceof 运算符这五种运算符. 首先来看逻辑运算符.下表列出 ...
- 算法笔记_075:蓝桥杯练习 最短路(Java)
目录 1 问题描述 2 解决方案 2.1 floyd算法解决 2.2 spfa算法解决 1 问题描述 问题描述 给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环).请你计算从 ...
- Java中的逻辑运算符短路效应
在Java中逻辑运算符&& 和 ||,它们都存在短路效应. 对于a && b,只有当a和b同时为true时,整个表达式才为true(在java中,首先运算表达式a,如果 ...
随机推荐
- Sphinx配置过程
http://www.oschina.net/question/84274_11938 http://www.ibm.com/developerworks/library/os-php-sphinxs ...
- jQuery validation
之前做客户端验证感觉自己javascript 不行,虽然能写出来一完整的验证,但从不自信,一直觉得客户端验证是比较繁琐的事情,但是又不能不做,只到最开始接触ajax ,遇到了一个jQuery vali ...
- C#中String和stringBuilder的区别
Stringbuilder类是直接用于字符串操作的类,打个比方把(1)string aa="123456";(2)aa+="789"; (3)StringBui ...
- Swift 项目中常用的第三方框架
Swift 项目中可能用到的第三方框架 字数1004 阅读4091 评论17 喜欢93 这里记录下swift开发中可能用的框架 , 最近浏览了不少,积累在这里,以后用的时候方便查阅.顺便推荐给大家! ...
- Android WiFi管理(WIFI_SERVICE)
Android WiFi管理(WIFI_SERVICE) 分类: Android2011-11-24 10:52 2000人阅读 评论(1) 收藏 举报 androidservicebuttonlay ...
- Chapter 1 First Sight——8
It took only one trip to get all my stuff upstairs. 就一趟我就把所有的东西搬到楼上了. I got the west bedroom that fa ...
- js判断各个浏览器
其实,实际写js的过程中,用功能判断”鸭shi辨形“的方法就可以了,不过,很多地方考试还是会问.所以总结一下,大部分都是分析navigator来实现的. var ua=navigator.userAg ...
- ExtJS简介--车辆调度
http://www.cnblogs.com/gaoweipeng/archive/2009/11/11/1599969.html
- ExtJS如何取得GridPanel当前选择行数据对象 - nuccch的专栏 - 博客频道 - CSDN.NET
body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...
- 如何编译生成 dll
原文:http://blog.csdn.net/qianchenglenger/article/details/21599235 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[ ...