键者天行

天行键,君子以自强不息;地势坤,君子以厚德载物!

用户操作
[即时聊天] [发私信] [加为好友]
chenshengID:chensheng913
1224446次访问,排名18好友40人,关注者114
天行键,君子以自强不息;
地势坤,君子以后德载物。
chensheng913的文章
原创 678 篇
翻译 0 篇
转载 87 篇
评论 1000 篇
chensheng913的公告
    首页         留言
本站总访问量:

当前页访问量:


与我联系:我的EMAIL
月 [下月] [上月]

天气预报

最近评论
bluehouse1985:InstallShield & InstallAnywhere 涨价前最后一次特卖!
Acresso公司主打产品installshield和installanywhere从11月1日起全面涨价!InstallShield & InstallAnywhere 涨价前最后一次特卖!仅10天!先到先得!
为庆祝最新版InstallShield 2009 &……
ellen_1397:这两天正好要用到!谢谢啦!
bluehouse1985:InstallShield 2009 升级优惠中!
为庆祝最新版InstallShield 2009上市,答谢广大新老用户的支持与厚爱,从即日起,上海世全软件(XLsoft)举办InstallShield 2009优惠活动!数量有限,售完为止!
销售热线:021-62128912/010-64616123
销售邮箱:sales@XLsoft.com.cn
flying_all:是否是一个公共变量,不仅要看是不是有static关键字,其实更应该看JVM是怎样分配空间的。如果在JVM中一个类的多个实例访问的是同一块内存,那就是公共变量了。谢谢。
flying_all:是否是一个公共变量,不仅要看是不是有static关键字,其实更应该看JVM是怎样分配空间的。如果在JVM中一个类的多个实例访问的是同一块内存,那就是公共变量了。谢谢。
文章分类
收藏
相册
搞笑娱乐
窈窕淑女
友情Blog
!Java的专栏
Baggico的专栏
feng_sundy的专栏
八进制的专栏
嘟嘟狼的专栏
潇潇的新生活
笨笨的专栏
编程夜未眠的专栏
阿赖的个性空间
韩磊的专栏
珍藏链接
《CSDN社区电子杂志-Java杂志》官方Blog
《CSDN社区电子杂志-Oracle杂志》官方Blog
侯捷专栏
执子之手,与子偕老
王森专栏
科诺专栏
蔡学镛专栏
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 Java 短路运算符和非短路运算符收藏

新一篇: 改进JAVA字符串分解的方法 | 旧一篇: Oracle 9i新增SQL命令----MERGE 

基础

短路运算符就是我们常用的“&&”、“||”,一般称为“条件操作”。

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”。

/ 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”。

“^”运算符道理是一样的,就不在这里罗索了。

最后。短路运算符只能用于逻辑表达式内,非短路运算符可用于位表达式和逻辑表达式内。也可以说:短路运算只能操作布尔型的,而非短路运算不仅可以操作布尔型,而且可以操作数值型。

发表于 @ 2005年08月11日 18:01:00|评论(loading...)|编辑

新一篇: 改进JAVA字符串分解的方法 | 旧一篇: Oracle 9i新增SQL命令----MERGE 

评论

#sucra 发表于2008-05-27 21:01:09  IP: 59.172.156.*
解释的真的很清除,学习了!
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © chensheng913