黑马程序员技术交流社区

标题: &和&&的区别 [打印本页]

作者: 高贵杰    时间: 2013-2-4 13:39
标题: &和&&的区别
本帖最后由 张向辉 于 2013-2-6 15:22 编辑

关于&和&&的区别,虽然是很简单的问题,但是希望大家能一起复习一下小知识点
作者: 李洪因    时间: 2013-2-4 13:51
本帖最后由 李洪因 于 2013-2-4 13:52 编辑

这么说吧:A&B的话,无论A是否是真,它都会去判断B的。A&&B的话,如果A是真的,它才会判断B,相反的,A是假的话,它就不去判断B了,直接认定是假了!
例子:
  1. public class Aa {
  2. public static void main(String[] args) {
  3. int i = 5 ;
  4. if( i > 6 & ++i > 6 ){
  5. System.out.println ( "这里使用&");
  6. }
  7. System.out.println( i );
  8. }
  9. }
  10. 这时候i的值为6;
  11. public class Aa {
  12. public static void main(String[] args) {
  13. int i = 5 ;
  14. if( i > 6 && ++i > 6 ){
  15. System.out.println ( "这里使用&&");
  16. } System.out.println( i );
  17. }
  18. }
  19. 这时候i 的值为5;
复制代码

作者: 张庚    时间: 2013-2-4 13:54
&&:
                        和&运算的结果是一样的。但是运算过程有点小区别。

                        &:无论左边的运算结果是什么,右边都参与运算。
                        &&:当左边为false时,右边不参与运算的。

               
                ||:
                        和|运算的结果是一样的。但是运算过程有点小区别。

                        |:无论左边的运算结果是什么,右边都参与运算。
                        ||:当左边为true时,右边不参与运算的。
作者: 丁强强    时间: 2013-2-4 17:42
本帖最后由 丁强强 于 2013-2-4 18:02 编辑

简单来说:
一个& 例:
for(int  a= 0; 0<a & a<10)
使用1个&时,会先判断0<a ;false,继续判断 a<10。
一个& &例:
for(int  a= 0; 0<a && a<10)
使用2个&&时,会先判断0<a ;false,不继续判断a<10
在for(int  a= 0; 0<a && a<10)里面使用了&&这样
就是优化的代码。
比如你跟一个qq好友视频聊天,你的要求是女的,24岁
你跟他开启视频一看,呀是男的,那还果断关闭小窗口,
难道你还要在问他今年24岁吗?

问了不就多此一举了吗,所以建议需要&的时候只使用&&。



作者: 逍林游    时间: 2013-2-4 18:21
逻辑与、位与
作者: 杨芳    时间: 2013-2-5 06:53
运算结果相同,&&效率高一些!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2