【334天】我爱刷题系列093(2018.01.05)

叨叨两句

  1. 慢慢来,比以前有一点进步就是好的

牛客网——java专项练习072

1

根据如下代码段,下列说法中正确的是( )。java

public class Parent {

    private void m1(){}

    void m2(){}

    protected void m3(){}

    public static void m4(){}

}

正确答案: C
A 子类中必定可以继承和覆盖Parent类的m1方法
B 子类中必定可以继承和覆盖Parent类的m2方法
C 子类中必定可以继承和覆盖Parent类的m3方法
D 子类中必定可以继承和覆盖Parent类的m4方法数组

public和protected均可以做用于子类,但在多态状况下,静态函数调用时编译和运行看左边,因此子父类存在同名静态函数访问的是父类,子类并不能覆盖父类的方法,因此选C

2

关于继承的说法正确的是()。函数

正确答案: A 你的答案: B (错误)
A 子类将继承父类全部的数据域和方法。
B 子类将继承父类的其可见的数据域和方法。
C 子类只继承父类public方法和数据域
D 子类只继承父类的方法,而不继承数据域测试

父类的静态方法不可继承,私有方法能继承了,但不能直接调用
在一个子类被建立的时候,首先会在内存中建立一个父类对象,而后在父类对象外部放上子类独有的属性,二者合起来造成一个子类的对象。因此所谓的继承使子类拥有父类全部的属性和方法其实能够这样理解,子类对象确实拥有父类对象中全部的属性和方法,可是父类对象中的私有属性和方法,子类是没法访问到的,只是拥有,但不能使用。就像有些东西你可能拥有,可是你并不能使用。因此子类对象是绝对大于父类对象的,所谓的子类对象只能继承父类非私有的属性及方法的说法是错误的。能够继承,只是没法访问到而已
子类被建立的时候并不会建立一个父类对象,只是会调用父类的构造器

3

如下说法错误的是()spa

正确答案: C
A 数组是一个对象
B 数组不是一种原生类
C 数组的大小能够任意改变
D 在Java中,数组存储在堆中连续内存空间里code

Java中数组是对象,不是基本数据类型(原生类),大小不可变且连续存储,由于是对象因此存在堆中。

1.Java中数组是对象,数组的父类是Object
new array[0].getClass().getSuperClass()  新建一个数组获取父类是Object.class

2.数组类是在运行的过程当中建立的 3.Java中数组内容存储在连续的堆内存中,数组名(引用) 存储在栈内存中指向堆内存中的内容

4

java语言的下面几种数组复制方法中,哪一个效率最高?
正确答案: B
A for 循环逐一复制
B System.arraycopy
C Array.copyOf
D 使用clone方法对象

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