黑马程序员技术交流社区

标题: 自己学习心得 [打印本页]

作者: 杨胜男    时间: 2014-6-6 14:11
标题: 自己学习心得
本帖最后由 杨胜男 于 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。

作者: 谭荣强    时间: 2014-6-8 05:37
nice。。。。
作者: 我为你着迷    时间: 2014-6-8 08:40
你好   x++==2;你这样写在语法上没有错误吗?   如果是正确的话 你这几个题还是很有代表性的
作者: Asura    时间: 2014-6-8 08:47
顶一下!
作者: IStudying    时间: 2014-6-8 09:36
赞一个。。。
作者: 上杉    时间: 2014-6-8 10:08
很有扩展性啊!!!!
作者: 江祖贇    时间: 2014-6-8 10:52
比较性 很强啊      差点忘了&& 运算符 一0为0的用处了 左为0右不行。
作者: pk49800    时间: 2014-6-8 11:41
比较好的逻辑与或和短路与或还有switch语句的例子
作者: 我为你着迷    时间: 2014-6-8 12:02
自己DOS命令行试了下 是可以运行的  为你赞 哈哈
作者: 黄宝宝    时间: 2014-6-8 12:11
请问这样提问能得到技术分吗?
作者: 妖精斩月    时间: 2014-6-8 21:00
看不懂啊
作者: sun_jun    时间: 2014-6-9 13:17
好贴呀!
作者: 会说话的木头    时间: 2014-6-9 13:23
第三题有错误 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




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