java面试题-运算符++先后

13.class Happy { 
                 public static void main(String args[])     { 
                     int i = 1 ;     
                     int j = i++ ; 
                     if((i==(++j))&&((i++)==j))     { 
                         i += j ; 
                     } 
                     System.out.println("i = "+i); 
                 } 
             } 
                 运行完上面代码之后输出i的值是多少?

A. 4

B. 5

C. 3

D. 6

 

java基础面试20题-答案解析版

 

正确答案是:B

int i = 1 ;

int j = i++ ; 

i++,先赋值在++,

走完此处

i=2    j=1

下一步

 if((i==(++j))&&((i++)==j)){}

if的&&判断从左到右(i==(++j))

++j,先++在比较

此时j=2,i==j为true。

(提个题外话&&如果左边为false,则右边不会执行,此处可以挖坑,读题细心观察)

继续走((i++)==j))

i++,先比较在++,

此时i=2,i==j为true。进入if块前i++ , i=3

 i += j ; 

i=3,j=2,

最后i=3+2=5.

如果想用断点一步步 看结果,建议将if的&&拆开来写。代码如下

       public static void main(String args[])     { 
            int i = 1 ;     
            int j = i++ ; 
            if((i==(++j))){ 
            	if(((i++)==j)){
            		i += j ; 
            	}
            } 
            System.out.println("i = "+i); 
        }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

songfelicity

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值