黑马程序员技术交流社区

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

作者: ytooo00    时间: 2015-5-10 16:46
标题: &和&&的区别?
&和&&的区别?

1,&&会出现短路,如果可以通过第一个表达式判断出整个表达式的结果,则不继续后面表达式的运算;只能操作boolean类型数据;
2,&不会出现短路,将整个表达式都运算。既可以操作boolean数据还可以操作数。
作者: 大西洋    时间: 2015-5-10 19:41
{:3_46:}  楼主是不是写反了
作者: ssc911361    时间: 2015-5-10 19:51
{:2_31:}.有个例子就更好了
作者: Daniel001    时间: 2015-5-10 19:56
双与是短路,左面通过了 右面就不执行了
作者: yearn    时间: 2015-5-10 19:58
围观!!
作者: ytooo00    时间: 2015-5-10 20:03
大西洋 发表于 2015-5-10 19:41
楼主是不是写反了

额 你是说哪写反了?
作者: ytooo00    时间: 2015-5-10 20:04
ssc911361 发表于 2015-5-10 19:51
.有个例子就更好了

接受意见,下次改善{:2_36:}{:2_36:}{:2_36:}
作者: zuoyou    时间: 2015-5-10 20:07
一起还真没注意这个啊。。。
作者: tanzhixue    时间: 2015-5-10 20:14
本帖最后由 tanzhixue 于 2015-5-10 20:19 编辑

楼主写的不够明白 应该说&&如果第一个判断表达式是false则后面的不会再去执行而&则会执行第二个
例如if(a!=3&&++y) 如果a=3,则y不会增加 而换成&的话 y会增加


作者: 愤怒的木瓜    时间: 2015-5-10 20:31
多谢楼主,终于看懂纠结2天的代码了!!!!
作者: 守株人    时间: 2015-5-10 20:33
长知识了
作者: yas丶    时间: 2015-5-10 20:48
长知识了
作者: 碎裂的空格键    时间: 2015-5-10 20:52
看看。。。。。。
作者: fengxing    时间: 2015-5-10 21:17
好好学习
作者: 邓熊财    时间: 2015-5-10 21:28
没有写反很正确,专业笔记本
作者: 我爱吃橙子    时间: 2015-5-10 21:34
实际项目中一般用&&   效率更高!
作者: 我干阿衰    时间: 2015-5-10 21:44
如a&&b,如果a为真,b就不执行了
作者: Advances    时间: 2015-5-10 21:46
不错!!!!
作者: MllWing    时间: 2015-5-10 22:02
实际项目中一般用&&不用&
作者: 青春印记深圳    时间: 2015-5-10 22:22
一句话总结同为真时且为真,同为假时或为假,异或为真,其他都为假。来来去去都是这几句话的应用不管是与或者或或者异或
作者: 18253594213    时间: 2015-5-10 22:32
最大区别在与&&会短路的哟
作者: Troy-Fu    时间: 2015-5-10 22:38
楼主这是自言自语呢
作者: sunxiaohong    时间: 2015-5-10 22:49
有,最重要的区别是,单与不会短路,双与会短路
作者: shw16888    时间: 2015-5-10 22:50
赞一个!!!
作者: 13699266500    时间: 2015-5-11 09:45
写的不够全面
作者: 彭越    时间: 2015-5-11 10:42
双与是短路,左面没通过了 右面就不执行了。双与更高效。
作者: 苟苟    时间: 2015-5-11 12:23
错了。。。&&是逻辑运算符,有短路功能,但是是在前面条件不满足,后面才不运算。前面条件满足,当然要计算了
作者: 苟苟    时间: 2015-5-11 12:28
(条件1)&&(条件2),判断的是条件1和条件2同时满足返回true,若条件1不满足,则条件2不执行。(条件1)&(条件2),不管条件一满足不满足,两个条件都要执行。另外&还可以做位运算符
作者: Always,    时间: 2015-5-11 12:56
围观。

作者: 只想好好的    时间: 2015-5-11 13:26
//& 和 && 的区别
        /*
        *& 假如你判断的条件有2个,第一个返回false了,第二还是会执行
        *&&  假如你判断的条件有2个,第一个返回false,那么第二个就不会执行
        */
        /**
         * 一个&
         */
        @Test
        public void test(){
               
                int x = 3;
                int y = 4;
                if(x++ > 3 & ++y > 4){
                        System.out.println("x=" + x );
                        System.out.println("y=" + y );
                }
                System.out.println("一个&");
                System.out.println("x=" + x );
                System.out.println("y=" + y );
               
               
        }
        /**
         * 二个&
         */
        @Test
        public void test1(){
                int x = 3;
                int y = 4;
                if(x++ > 3 && ++y > 4){
                        System.out.println("x=" + x );
                        System.out.println("y=" + y );
                }
                System.out.println("二个&");
                System.out.println("x=" + x );
                System.out.println("y=" + y );
        }
输出
一个&
x=4
y=5


二个&
x=4
y=4


作者: 喜水禾    时间: 2015-5-11 13:31
我刚刚好看到这个知识点!一个与话就是无论第一个条件是否成立,两边的表达式都要执行!两个的就是只有左边的表达式是真,才会执行右边的表达式!java真的是博大精深啊!
作者: 牛仔很忙fire    时间: 2015-5-11 21:05
写的不错
作者: Cat    时间: 2015-5-11 21:19
学习一下~
作者: 空--格    时间: 2015-5-11 21:37
实际运用中都是用&&
作者: Melo    时间: 2015-5-11 21:44
||丶|和这原理一样




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