黑马程序员技术交流社区

标题: 这个判断条件看着晕啊 [打印本页]

作者: 高浩    时间: 2013-1-16 21:05
标题: 这个判断条件看着晕啊
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里面的·那是啥意思呢?一个这&?
作者: 王少雷    时间: 2013-1-16 21:12
& : 只要两边的boolean表达式结果,有一个为false。那么结果就是false。
| : 两边只要有一个为true,结果为true。
只有两边都有false,结果为false。
^ : 异或;就是和|有点不一样。当true ^ true = false;
像这种逻辑判断符号优先级都为最后一级,不用考虑,只用记得两边参与运算返回是true or false即可。
关键是要把++ 这种符号判断正确
作者: 唐晓    时间: 2013-1-16 21:21
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;
作者: 王阳    时间: 2013-1-16 21:27
& 和&& 都是并且得运算,只不过&&具有断路功能,也就是说,当前者为false了,就不执行后面的了,从效率上看,&&更快些
作者: 夏振博    时间: 2013-1-16 21:27
& 左右两个条件都满足 (执行) 只要有一个没满足(不执行)
||左右两个条件有一个满足(执行) 条件都不满足(不执行)




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