41、Java中异常分为哪两种?说几个常见的编译时异常类?
42、异常的处理机制有几种?如何自定义一个异常?
43、在异常捕捉时,如果发生异常,那么try.catch.finally块外的return语句会执行吗?try、catch、finally是必须要存在的吗?
44、thow与thorws区别
45、Error与Exception区别?
46、Log4j日志有几个级别?使用Log4j对程序有影响吗?
47、创建对象的方式有哪几种?哪种效率更高?
48、Java中集合框架的有几个?Collection接口下有那些集合框架?分别有什么特点?
49、ArrayList与LinkedList有什么区别?Array与ArrayList有什么不一样?
50、详解Java中的集合框架
41、Java中异常分为哪两种?说几个常见的编译时异常类?
编译时异常、运行时异常
常见的编译时异常类:
NullPointerException:空指针异常
ArrayIndexOutOfBoundsException:数组下标越界
NumberFormatException:数字转换异常
IllegalArgumentException:参数不匹配异常
InstantiationException:对象初始化异常
ArithmeticException:算术异常
42、异常的处理机制有几种?如何自定义一个异常?
异常的处理机制:
异常捕捉:try…catch…finally
异常抛出:throws自定义一个异常:
继承一个异常类,通常是RumtimeException或者Exception
43、在异常捕捉时,如果发生异常,那么try.catch.finally块外的return语句会执行吗?try、catch、finally是必须要存在的吗?
会执行,如果有finally,在finally之后被执行,如果没有finally,在catch之后被执行
try块必须存在,catch和finally可以不存在,但不能同时不存在
44、thow与thorws区别
thow | throws |
---|---|
用在方法体内,跟的是异常对象名 | 用在方法声明后面,跟的是异常类名 |
只能抛出一个异常对象名 | 可以跟多个异常类名,用逗号隔开 |
表示抛出异常,由方法体内的语句处理 | 表示抛出异常,由该方法的调用者来处理 |
执行throw则一定抛出了某种异常 | throws表示出现异常的一种可能性,并不一定会发生这些异常 |
45、Error与Exception区别?
Error | Exception |
---|---|
是java错误处理机制的一部分 | 是java错误处理机制的一部分 |
继承了Throwable类 | 继承了Throwable类 |
表示系统错误,不能通过程序来进行错误处理 | 表示的异常,异常可以通过程序来捕捉,或者优化程序来避免。 |
46、Log4j日志有几个级别?使用Log4j对程序有影响吗?
由低到高:debug、info、wran、error
有,log4j是用来日志记录的,记录一些关键敏感的信息,通常会将日志记录到本地文件或者数据库中。记录在本地文件中,会有频繁的io操作,会耗费一些系统资源。记录在数据库中,会频繁地操作数据库表,对系统性能也有一定的影响。但是为了程序安全以及数据的恢复或者bug的跟踪,这点资源消耗是可以承受的。
47、创建对象的方式有哪几种?哪种效率更高?
两种:new,Java反射
通过new创建对象的效率比较高。通过反射时,先找查找类资源,使用类加载器创建,过程比较繁琐,所以效率较低
48、Java中集合框架的有几个?Collection接口下有那些集合框架?分别有什么特点
Collection、Map。
List:线性表:顺序存储、可以有重复值。
Set:无序集合: 无须存储、不能有重复值。
49、ArrayList与LinkedList有什么区别?Array与ArrayList有什么不一样?
ArrayList | LinkedList |
---|---|
实现了List接口 | 实现了List接口 |
线性表,底层是使用数组实现的 | 双向链表 |
在尾端插入和访问数据时效率较高 | 在中间插入或者头部插入时效率较高,在访问数据时效率较低 |
Array与ArrayList都是用来存储数据的集合。ArrayList底层是使用数组实现的,但是ArrayList对数组进行了封装和功能扩展,拥有许多原生数组没有的一些功能。我们可以理解成ArrayList是Array的一个升级版。
50、详解Java中的集合框架
-
定义:
Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象。
-
作用:
集合可以:
1、在类的内部,对数据进行组织;
2、简单而快速的搜索大数量的条目;
3、有的集合接口,提供了一系列排列有序的元素,并且可以在序列中间快速的插入或者删除元素;
4、有的集合接口,提供了映射关系,可以通过关键字(key)快速的查找到对应的唯一对象,而这个关键字可以是任意类型。
-
与数组的对比:
1、数组的长度固定,集合长度可变;
2、数组只能通过下标访问元素,下标类型只能是数字型,而有的集合可以通过任意类型查找所映射的具体对象。
-
Java集合框架的体系结构
Collection接口
1、是List、Set和Queue接口的父接口;
2、定义了可用于操作List、Set和Queue的方法——增删改查;
-
List接口及其实现类——ArrayList
1、 List(序列),元素有序,并且可重复;
2、List可以精确控制元素的插入位置,或删除指定位置的元素;
3、ArrayList——数组序列,是List的一个重要实现类;
4、ArrayList底层是由数组实现的
泛型集合中,不能添加泛型规定的类型及其子类型以外的对象,否则会报错。
泛型集合中的限定类型,不能使用基本类型,必须用基本类型的包装类。
-
Set接口及其实现类——HashSet
1、Set(集),元素无序,并且不可以重复;
2、HashSet——哈希集,是Set的一个重要实现类;
Map接口
1、Map提供了一种映射关系,元素是以键值对(key-value)的形式存储的,能根据key快速查找value;
2、Map中的键值对以Entry类型的对象实例形式存在;
3、key值不能重复,value值可以重复;
4、key对value是多(一)对一的关系;
5、Map接口提供了返回key值集合、value值集合、Entry值集合,的方法;
6、Map支持泛型,形式如:Map<K,V>
-
HashMap类
1、HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现;
2、HashMap中的Entry对象是无序排列的;
3、Key值和value值都可以为null,但是一个HashMap只能有一个Key值为null的映射(Key值不可重复);