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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高浩 中级黑马   /  2013-1-16 21:05  /  1544 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Demo
{
        public static void main(String[] args)
        {
                int x=0,y=1;
                if(++x==y--&x++==1||--y==0)
                        System.out.println("x="+x+",y="+y);
                else
                        System.out.println("y="+y+",x="+x);
        }
}
if里面的·那是啥意思呢?一个这&?

评分

参与人数 1黑马币 +12 收起 理由
黄锦成 + 12 淡定

查看全部评分

4 个回复

倒序浏览
& : 只要两边的boolean表达式结果,有一个为false。那么结果就是false。
| : 两边只要有一个为true,结果为true。
只有两边都有false,结果为false。
^ : 异或;就是和|有点不一样。当true ^ true = false;
像这种逻辑判断符号优先级都为最后一级,不用考虑,只用记得两边参与运算返回是true or false即可。
关键是要把++ 这种符号判断正确

评分

参与人数 1黑马币 +12 收起 理由
黄锦成 + 12 赞一个!

查看全部评分

回复 使用道具 举报
int x=0,y=1;
if(++x==y--&x++==1||--y==0)
++在前面是自增后在计算,++在后面是计算后在自增
源程序可以理解为:
(++x==y--)就相当于1=1(此时x值是1,y值是0);(x++==1)就相当于1=1(此时x=2,y=0)
||的作用是如果左边为true,右边就不用在算了,如果为false,则右边需要在比较。
所以打印的结果是x=2,y=0;

评分

参与人数 1黑马币 +12 收起 理由
黄锦成 + 12 神马都是浮云

查看全部评分

回复 使用道具 举报
& 和&& 都是并且得运算,只不过&&具有断路功能,也就是说,当前者为false了,就不执行后面的了,从效率上看,&&更快些
回复 使用道具 举报
& 左右两个条件都满足 (执行) 只要有一个没满足(不执行)
||左右两个条件有一个满足(执行) 条件都不满足(不执行)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马