java牛客刷题2020年9月4日
-
对于abstract声明的类,下面说法正确的是
可以实例化 不可以被继承 子类为abstract 只能被继承 可以被抽象类继承 正确答案: E 你的答案: B A,抽象类不能实例化,因为有抽象方法未实现 B,可以被继承。派生类可以实现抽象方法 C,子类可以是抽象的,也可以非抽象的 D,只能被继承说法太肯定,不正确 E,可以被抽象类继承,也可以被非抽象类继承
-
有时为了避免某些未识别的异常抛给更高的上层应用,在某些接口实现中我们通常需要捕获编译运行期所有的异常, catch 下述哪个类的实例才能达到目的:()
正确答案: B 你的答案: D (错误)
Error Exception RuntimeException Throwable
-
检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果。
public class HelloB extends HelloA { public HelloB() { } { System.out.println("I’m B class"); } static { System.out.println("static B"); } public static void main(String[] args) { new HelloB(); } } class HelloA { public HelloA() { } { System.out.println("I’m A class"); } static { System.out.println("static A"); } }
static A I’m A class static B I’m B class 答案: 其中涉及:静态初始化代码块、构造代码块、构造方法 当涉及到继承时,按照如下顺序执行: 1、执行父类的静态代码块 static { System.out.println("static A"); } 输出:static A 2、执行子类的静态代码块 static { System.out.println("static B"); } 输出:static B 3、执行父类的构造代码块 { System.out.println("I’m A class"); } 输出:I'm A class 4、执行父类的构造函数 public HelloA() { } 输出:无 5、执行子类的构造代码块 { System.out.println("I’m B class"); } 输出:I'm B class 6、执行子类的构造函数 public HelloB() { } 输出:无 那么,最后的输出为: static A static B I'm A class I'm B class 正确答案:C 或者: 1.静态代码块 2.构造代码块3.构造方法的执行顺序是1>2>3;明白他们是干嘛的就理解了。 1.静态代码块:是在类的加载过程的第三步初始化的时候进行的,主要目的是给类变量赋予初始值。 2.构造代码块:是独立的,必须依附载体才能运行,Java会把构造代码块放到每种构造方法的前面,用于实例化一些共有的实例变量,减少代码量。 3.构造方法:用于实例化变量。 1是类级别的,2、3是实例级别的,自然1要优先23. 在就明白一点:对子类得主动使用会导致对其父类得主动使用,所以尽管实例化的是子类,但也会导致父类的初始化和实例化,且优于子类执行。
-
Java 中的集合类包括 ArrayList 、 LinkedList 、 HashMap 等,下列关于集合类描述正确的是?()
正确答案: A B D 你的答案: B C D (错误)
ArrayList和LinkedList均实现了List接口 ArrayList访问速度比LinkedList快 随机添加和删除元素时,ArrayList的表现更加快速 HashMap实现Map接口,它允许任何类型的键和值对象,并允许将NULL用作键或值 解释: A、HashMap实现了Map接口的,它的Key和Value都可以是null,但是Hashtable种,Key和Value都不能是null。 B、ArrayList与LinkedList都实现了List接口,继承了AbstractList类。 C、ArrayList底层是动态数组是实现,随机位置添加和删除,都需要移动数组的数据,而LinkedList底层是双向链表,只需要修改Node节点的引用。 D、随机访问数组要比链表块。 下面放一张ArrayList和LinkedList的区别表:
-
在使用super和this关键字时,以下描述错误的是()
在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过 super()和this()不一定要放在构造方法内第一行 this()和super()可以同时出现在一个构造函数中 this()和super()可以在static环境中使用,包括static方法和static语句块 正确答案: B C D 你的答案: B D (错误) 1、super()表示调用父类构造函数、this()调用自己的构造函数,而自己的构造函数第一行要使用super()调用父类的构造函数,所以这俩不能在一个构造函数中会出现重复引用的情况 2、super()和this()必须在构造函数第一行,所以这一点也表明他俩不能在一个构造函数中 3、this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块(里面不能使用非static类型的)。
-
博客网站 https://yamon.top
个人网站 https://yamon.top/resume
GitHub网站 https://github.com/yamonc
欢迎前来访问