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

叨叨两句

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

牛客网——java专项练习072

1

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

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

以下说法错误的是()

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

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类底层根本没有这个方法,自己看看源码就全知道了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值