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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨胜男 中级黑马   /  2014-6-6 14:11  /  1548 人查看  /  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 个回复

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