手撕java基础笔试题之易错题总结(一)

今日小日记:

今天刷了30个java笔试题,直接错了5个,心都在滴血,为了记住错题及相关知识点,将五个错题和相关知识点记录下来!然后知识点是根据自己的想法写的可能解释不一定对,如果解释有误,请联系作者

1、对Map的用法

南瑞java编程题 南瑞java笔试题_阿里云

解析:map和sortedMap属于接口,不可以一new的方式创建,HashMap基于Hash表实现Map接口的类,并允许null的值和null的键,TreeMap通过红黑树实现Map接口,Key不可以为null,会报NullPointerException异常,Value值可以为空

2、Finally语句块

南瑞java编程题 南瑞java笔试题_阿里云_02

(1)不管有没有异常,finally块中代码都要执行,

(2)当try和catch中有return时,finally任会执行

(3)finally是在return后面的表达式运算后执行的(此时并没有返回运算返回后的值,而是先把返回的值保存起来。不管finally的值怎么执行,返回值都不会改变)所以函数返回值任然是finally执行之前的值

(4)finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的值

3、对象创建函数那些会调用构造函数?

南瑞java编程题 南瑞java笔试题_springmvc_03

创建对象的四种方式:new ,序列化,反射,克隆

只有new和反射用到了构造方法,但是他们两个执行构造函数的类型不一样,

(1)new方法创建对象,其初始化过程可以执行无参的构造器也可以执行有参构造器

(2)反射,如果采用静态的newInstance()方法,执行的构造器一定是无参的构造器,反射执行不了带参数的构造器

4、如何获取ServlletContext设置的参数值?

南瑞java编程题 南瑞java笔试题_南瑞java编程题_04

(1)getParameter()是获取POST/GET传递的参数值(Servlet:request.getParameter

(2)getInitParameter获取Tomcat的Service.xml中设置Context的初始化参数

(3)getAttribute:获取的是容器中的数据值

(3)getRequestDispatcher是请求转发

5、java语言的下面几种数据复制方法中,那个效率最高

南瑞java编程题 南瑞java笔试题_构造器_05

复制效率:System.arraycopy>clone>arrays.copyOf>for循环

其中:System给出的源代码arrayCopy方法肯定是最快的,而Arrays.copyOF(注意是Arrays,不是array)实现,在源码中是调用了System.arrayCopy的,多了一个步骤,肯定不是最快的