java 面试题No.5-6 x++ 及 ++x的使用与测试 &&的使用和测评

第五题

问:假如“int a=5,b=3;”,则执行“if (!(a > 0) && b++ > 0);"后a和b的值分别为_和_。

A.5,3

B.0,1

C.0.3

D.5,4

解析:

表达式运算面试例题。因为“!(a > 0)”运算结束后,整个表达式的值已肯定为假,所以不必再去计算后面的式子。

第六题

问:以下代码执行结果是多少?

public class Qus6 {
    public static void main(String[] args) {
        int i = 0;
        i = i++ + ++i;
        int j = 0;
        j = ++j + j++ + j++ + j++;
        int k = 0;
        k = k++ + k++ + k++ + ++k;
        int h = 0;
        h = ++h + ++h;
        int p1 = 0, p2 = 0;
        int q1 = 0, q2 = 0;
        q1 = ++p1;
        q2 = p2++;

        System.out.println("i=" + i);
        System.out.println("j=" + j);
        System.out.println("k=" + k);
        System.out.println("h=" + h);
        System.out.println("p1=" + p1);
        System.out.println("p2=" + p2);
        System.out.println("q1=" + q1);
        System.out.println("q2=" + q2);
    }
}

解析:i++和++i 使用的不同点在于一个是程序完毕后自增,一个是
程序开始前自增。“i= i++ + ++i;”执行的过程是先执行 i++,但是i自增1操作是稍后才执行,所以此时的i还是 0,然后执行++i,++i后i的值是 1,执行完++i后要补增i++,所以此时i的值实际上是 2,0+2=2,然后赋值给 i,最终i的值是 2
“ j = ++j + j++ + j++ + j++;”执行的过程是先++j,所以j的值是 1,然后执行j++,j++后j的值仍然是 1,然后再执行j++,执行后的结果仍然是 1,但要补增刚才的 j++,所以此时j的值实际上是 2,然后再执行最后一个j++,执行后的结果仍然是 2,但要补增刚才的j++,所以此时j的值实际上是 3,所以1+1+2+3=7,然后赋值给j,最终j的值是 7
“k = k++ + k++ + k++ + ++k;”执行的过程是先 k++,所以k的值是0,然后执行 k++,k++后的值仍然是0,但要补增刚才的 k++,所以此时k的值实际上是 1,然后再执行最后一个 k++,执行后的结果仍然是 1,但要补增刚才的 k++,所以此时 k 的值实际上是 2,最后执行++k,执行结果为3,再补增刚才的k++,所以k的实际结果是4。所以0+1+2+4=7然后赋值给 k,最终 k的值是 7
“h = ++h + ++h;”是先自增 h,所以h值为1,再自增h所以h值为2。所以1+2=3,然后赋值给 h,最终 h的值是3
“q1 = ++p1;”先自增p1,所以p1的值是1,再赋值给q1,所以q1的值是 1
“q2=p2++;”先赋值p2给q2,所以q2 的值是0然后自增 p2,所以p2的值是1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

长青风

赏一块,发大财!赏两块,惹人爱

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

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

打赏作者

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

抵扣说明:

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

余额充值