java基础刷题笔记8
Java刷题笔记8
T1 父类子类的调用
假定Base b = new Derived(); 调用执行b.methodOne()后,输出结果是什么?
1 | public class Base |
答案: ABDC
只要是被子类重写的方法,不被super调用都是调用子类方法
T2 Hashtable 和 HashMap 的区别
HashTable和HashMap的区别(7点):
1.继承的父类不同:HashTable继承Dictory类,HashMap继承AbstractMap.但都实现了Map接口;
2.线程安全性不同:HashTable是线程安全的,适用于多线程;HashMap是非线程安全,更适合于单线程;
3.是否提供contains方法:HashTable中保留了contains方法,与constainsValue功能相同;HashMap中去掉了contains方法;
4.key和value是否可为null值:HashTable的key、value都不允许null值;HashMap,null可以作为key;
5.遍历方式的内部实现不同:HashTable、HashMap都使用了Iterator,HashTable还使用过Enumeration方式;
6.hash值不同:HashTable直接使用对象的hashCode,而HashMap重新计算hash值。
7.内部使用的数组初始化和扩容方式不同:Hashtable不要求底层数组的容量一定要为2的整数次幂,而HashMap则要求一定为2的整数次幂;Hashtable扩容时,将容量变为原来的2倍加1,而HashMap扩容时,将容量变为原来的2倍。
作者:98年饭崽
链接:https://www.nowcoder.com/exam/test/74968216/submission?pid=53634742&testCallback=undefined
来源:牛客网
T3 静态方法
阅读如下代码。 请问,对语句行 test.hello(). 描述正确的有()
1 | package NowCoder; |
A 能编译通过,并正确运行
B因为使用了未初始化的变量,所以不能编译通过
C 以错误的方式访问了静态方法
D 能编译通过,但因变量为null,不能正常运行
答案: A
静态方法的使用不依靠对象,只看类型,在编译时就确定了
T4 构造方法的调用时机
readObject方法只是从文件中还原对象,clone只是一种复制拷贝对象。
构造函数的作用是完成对象的初始化。当程序执行到new操作符时, 首先去看new操作符后面的类型,因为知道了类型,才能知道要分配多大的内存空间。分配完内存之后,再调用构造函数,填充对象的各个域,这一步叫做对象的初始化。而选项B、D中,对象的初始化并不是通过构造函数完成的,而是读取别的内存区域中的对象的各个域来完成。
作者:joso
链接:https://www.nowcoder.com/exam/test/74971287/submission?pid=53636911&testCallback=undefined
来源:牛客网