A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高贵杰 中级黑马   /  2013-2-4 13:39  /  2086 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张向辉 于 2013-2-6 15:22 编辑

关于&和&&的区别,虽然是很简单的问题,但是希望大家能一起复习一下小知识点

评分

参与人数 1黑马币 +6 收起 理由
舒远 + 6 鼓励一下

查看全部评分

5 个回复

倒序浏览
本帖最后由 李洪因 于 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;
复制代码

评分

参与人数 1技术分 +1 收起 理由
舒远 + 1

查看全部评分

回复 使用道具 举报
&&:
                        和&运算的结果是一样的。但是运算过程有点小区别。

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

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

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

评分

参与人数 1黑马币 +12 收起 理由
舒远 + 12

查看全部评分

回复 使用道具 举报
本帖最后由 丁强强 于 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岁吗?

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


评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
逻辑与、位与
回复 使用道具 举报
杨芳 来自手机 中级黑马 2013-2-5 06:53:33
地板
运算结果相同,&&效率高一些!来自: Android客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马