本帖最后由 邵阳 于 2012-7-3 13:39 编辑
class lianxi
{
public static void main(String[] args)
{
int x=1,y=1;
if(x++==2 && ++y==2)
{ x=7;} //在这里你省略了{},则if在不加{}情况下,默认执行第一句话。
System.out.println("x="+x+",y="+y);
}
}
我编了两段代码
1:class Demo
{
public static void main(String[] args)
{
int x=1,y=1;
System.out.println("x++==2:"+(x++==2)+"...."+"++y==2:"+(++y==2) );
}
}
结果是x++==2:false....++y==2:true
所以可以看你的代码,x++==2 && ++y==2,&&是短路,当前面判断是false时,后面的不需要判断,也就是说++y都没有执行,所以你代码里面的if判断语句是错误的,就不执行语句x=7.
2:class Test
{
public static void main(String[] args)
{
int x=1;
x++;
System.out.println("x:"+x );
}
}
结果是x:2
所以 System.out.println("x="+x+",y="+y);打印出的是x=2,y=1.
如果没有
x=7;
因为if判断是错误的,就默认不执行System.out.println("x="+x+",y="+y);
结果就不会打印任何东西
说一下自增前自增后的区别:
自增(后)a=2;b=++a; a=3;b=3
自增(前)a=2;b=++a; a=3;b=2
x++==2 是错误的,因为此时x=1.
++y==2 是正确的,因为此时y=2.但是根本执行不到这里,就短路啦。
最后打印结果是只有x自增啦,是2
|