手撕java基础笔试题之易错题总结(一)
今日小日记:
今天刷了30个java笔试题,直接错了5个,心都在滴血,为了记住错题及相关知识点,将五个错题和相关知识点记录下来!然后知识点是根据自己的想法写的可能解释不一定对,如果解释有误,请联系作者
1、对Map的用法
解析:map和sortedMap属于接口,不可以一new的方式创建,HashMap基于Hash表实现Map接口的类,并允许null的值和null的键,TreeMap通过红黑树实现Map接口,Key不可以为null,会报NullPointerException异常,Value值可以为空
2、Finally语句块
(1)不管有没有异常,finally块中代码都要执行,
(2)当try和catch中有return时,finally任会执行
(3)finally是在return后面的表达式运算后执行的(此时并没有返回运算返回后的值,而是先把返回的值保存起来。不管finally的值怎么执行,返回值都不会改变)所以函数返回值任然是finally执行之前的值
(4)finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的值
3、对象创建函数那些会调用构造函数?
创建对象的四种方式:new ,序列化,反射,克隆
只有new和反射用到了构造方法,但是他们两个执行构造函数的类型不一样,
(1)new方法创建对象,其初始化过程可以执行无参的构造器也可以执行有参构造器
(2)反射,如果采用静态的newInstance()方法,执行的构造器一定是无参的构造器,反射执行不了带参数的构造器
4、如何获取ServlletContext设置的参数值?
(1)getParameter()是获取POST/GET传递的参数值(Servlet:request.getParameter)
(2)getInitParameter获取Tomcat的Service.xml中设置Context的初始化参数
(3)getAttribute:获取的是容器中的数据值
(3)getRequestDispatcher是请求转发
5、java语言的下面几种数据复制方法中,那个效率最高
复制效率:System.arraycopy>clone>arrays.copyOf>for循环
其中:System给出的源代码arrayCopy方法肯定是最快的,而Arrays.copyOF(注意是Arrays,不是array)实现,在源码中是调用了System.arrayCopy的,多了一个步骤,肯定不是最快的