本帖最后由 杨胜男 于 2014-6-8 11:40 编辑
第一题
int x = 1,y=1;
if(x++==2 & ++y==2)
{
x =7;
}
System.out.println("x="+x+",y="+y);//x=2,y=2
1.先判断if语句中的内容:x++==2;x先和2对比,再自增。int x=1,所以(x++==2)值为false,这时x的值为2。
2.再判断++y==2; y的值先自增,再和2对比。++y==2为true,y的值为2。
3.false & true值为false,所以不执行if{}语句。直接打印x和y的值。
4.结果x=2,y=2
---------------------------------------------------
第二题
int x = 1,y = 1;
if(x++==2 && ++y==2)
{
x =7;
}
System.out.println("x="+x+",y="+y);//x=2,y=1
1.先判断if语句中的内容:x++==2;x先和2对比,再自增。int x=1,所以(x++==2)值为false,这时x的值为2。
2.由于是&&运算。只要左边为false,右边就不再执行。(++y==2)没有执行到。所以y的值还是1
3.所以直接打印x和y的值
4.结果x=2,y=1
---------------------------------------------------
第三题
int x = 1,y = 1;
if(x++==1 | ++y==1)
{
x =7;
}
System.out.println("x="+x+",y="+y);x=7,y=2
1.先判断if语句中的内容:x++==2;x先和2对比,再自增。int x=1,所以(x++==2)值为true,这时x的值为2。
2.再判断++y==1; y的值先自增,再和1对比。++y==1为false,y的值为2。
3.true | false值为true
4.所以执行{x=7;}
5.结果x=7,y=2
---------------------------------------------------
第四题
int x = 1,y = 1;
if(x++==1 || ++y==1)
{
x =7;
}
System.out.println("x="+x+",y="+y);//x=7,y=1
1.先判断if语句中的内容:x++==2;x先和2对比,再自增。int x=1,所以(x++==2)值为true,这时x的值为2。
2.由于是||运算,只要左边为真,表达式的值就为真,右边不参与运算。++y==1不执行,y的值为1.
3.所以执行{x=7;}
4.结果x=7,y=1
---------------------------------------------------
第五题
int x = 2,y=3;
switch(x)
{
default:
y++;
case 3:
y++;
case 4:
y++;
}
System.out.println("y="+y);//y=6
switch(x)语句中如果有与之对应的case值就执行该case语句,一直执行到break或大括号结束。没有与之对应的case值那就执行default语句,直到执行到break或大括号结束。
x=2,没有与之对应的case值,所以从default:开始语句执行,y=3,y++;y的值为4。没有break,继续往下执行
case 3: y++; y的值为5.
case 4:y++;y的值为6。
|
|