1.HashSet子类依靠()方法区分重复元素。
hashCode(),equals()
分析:
HashSet内部使用Map保存数据,即将HashSet的数据作为Map的key值保存,这也是HashSet中元素不能重复的原因。而Map中保存key值前,会去判断当前Map中是否含有该key对象,内部是先通过key的hashCode,确定有相同的hashCode之后,再通过equals方法判断是否相同。
HashSet 添加元素,首先比较hash值 是否有相同hash,没有则添加成功,有则继续比较equals,如果不同则添加成功,否则不添加。
2.Java 中的集合类包括 ArrayList 、 LinkedList 、 HashMap 等,下列关于集合类描述错误的是?
A.ArrayList和LinkedList均实现了List接口
B.ArrayList访问速度比LinkedList快
C.随机添加和删除元素时,ArrayList的表现更加快速
D.HashMap实现Map接口,它允许任何类型的键和值对象,并允许将NULL用作键或值
分析:
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
3.
分析:
选D 假如try中有异常抛出,则会去执行catch块,再去执行finally块;假如没有catch 块,可以直接执行finally 块,方法就以抛出异常的方式结束,而finally 后的内容也不会被执行,所以catch 和 finally 不能同时省略。
在JVM调用mian方法之前先用进行静态内容的初始化。顺序为:父类的静态变量, 父类的静态代码块 ,子类的静态变量,子类的静态代码块。
4.下面哪个不属于HttpServletResponse接口完成的功能?
A:设置HTTP头标
response.setHeader("Refresh","3");//3秒刷新页面一次
B:设置cookie
Cookie c1 = new Cookie("username","only");
response.addCookie(c1);
C(错误):读取路径信息,request读取路径信息
D:输出返回数据
HttpServletResponse.getOutputStream().write();
5.Java语言中,方法的重写(Overriding)和重载(Overloading)是多态性的不同表现。下边哪些说法是对的?
答案是AC
重写是子类继承父类方法并对其进行修改,可选择调用父类方法或子类重写后的同名方法
重载是在一个类可以存在同名但参数列表不同的方法,可根据传入的参数调用相应的方法
1.java支持单继承,却可以实现多个接口。a对d错
2.接口没有构造方法,所以不能实例化,抽象类有构造方法,但是不是用来实例化的,是用来初始化的。c对
3.抽象类可以定义普通成员变量而接口不可以,但是抽象类和接口都可以定义静态成员变量,只是接口的静态成员变量要用static final public 来修饰。b错
6.线程的执行体
run()方法是用来定义这个线程在启动的时候需要做什么,但是,直接执行run()方法那就不是线程,必须使用start()启动,那样才是线程。
内存回收程序负责释放无用内存
C++可以多重继承,但是Java中对于类而言,只有单继承,接口可以多继承
列表List和集合Set
Set不能有重复的元素,且是无序的,要有空值也就只能有一个,因为它不允许重复。
List可以有重复元素,且是有序的,要有空值也可以有多个,因为它可重复。
读进去 写出来