补补基础——小小考题(三)

前言:

         刷题刷题,持续刷题,每天刷个几时道,身体倍儿爽。

 

错题集:

      第一题:

java语言的下面几种数组复制方法中,哪个效率最高?

  • for 循环逐一复制
  • System.arraycopy
  • Array.copyOf
  • 使用clone方法

          答案:System.arraycopy

          题目解析:

          复制的效率System.arraycopy>clone>Arrays.copyOf>for循环。这里面在System类源码中给出了arraycopy的方法,是native方法,也就是本地方法,肯定是最快的。而Arrays.copyOf(注意是Arrays类,不是Array)的实现,在源码中是调用System.copyOf的,多了一个步骤,肯定就不是最快的。前面几个说System.copyOf的不要看,System类底层根本没有这个方法,自己看看源码就全知道了。

             

       第二题:

class Test {
    public static void hello() {
        System.out.println("hello");
    }
}
public class MyApplication {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Test test=null;
        test.hello();
    }
}

        答案是:hello

        题目解析:

               why?这题是个巨坑,巨坑。test对象是要在java堆区才会有引用,但是加了static的方法或变量是属于类的。test=null,在堆中没有引用,但是可以根据声明Test找到对应的静态方法。

                在简单地点的理解就是:类名调方法。Test.hello();

 

      第三题:

public class MyApplication {
    public static void main(String[] args) {

        System.out.println("-----------------------");
        int x = 0;
        int y = 0;
        int k = 0;
        for (int z = 0; z < 5; z++) {
            if ((++x > 2) && (++y > 2) && (k++ > 2))
            {
                x++;
                ++y;
                k++;
            }
        }
        System.out.println(x + "" +y + "" +k);
    }
}

           答案:

                             

           题目分析:

                ++i和i++的区别我想大家应该都知道了吧。一个赋值前加1,一个赋值后加1。那就开始每轮解析:

              第一轮:z=0   x=1(&&是所有成立才为true,因为++i后是1还是小于2,后面的就不走了)

              第二轮: z=1   x=2 

              第三轮:z=2   x-3  y=1(++x已经是三了,通过后执行下一个++y,所有是1)

              第四轮:z=3   x=4  y=2

              第五轮:z=4   x=5  y=3   (这时候k还是0,别急着,这里因为是后++)

             第六轮: z=5   判断不符合,要跳出循环   所有x =5 y =3 k=1(上一轮的k++这时候就起效了)    

总结:

           这又是一道i++和++i的题。我服了,做几次还是错几次。重新做一步步来又不错。。服了。。满满的服气。理论感觉都好,可以一遇到题目就不能变通了。唉~社会,社会。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值