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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨胜男 中级黑马   /  2014-6-6 14:11  /  1643 人查看  /  12 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨胜男 于 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。

12 个回复

倒序浏览
nice。。。。
回复 使用道具 举报
你好   x++==2;你这样写在语法上没有错误吗?   如果是正确的话 你这几个题还是很有代表性的
回复 使用道具 举报
顶一下!
回复 使用道具 举报
赞一个。。。
回复 使用道具 举报
很有扩展性啊!!!!
回复 使用道具 举报
比较性 很强啊      差点忘了&& 运算符 一0为0的用处了 左为0右不行。
回复 使用道具 举报
比较好的逻辑与或和短路与或还有switch语句的例子
回复 使用道具 举报
自己DOS命令行试了下 是可以运行的  为你赞 哈哈
回复 使用道具 举报
请问这样提问能得到技术分吗?
回复 使用道具 举报
看不懂啊
回复 使用道具 举报
好贴呀!
回复 使用道具 举报
第三题有错误 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
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马