Java 基础面试题(三)
今天有更多的时间学习,加油!
1、如何把一段逗号分割的字符串转换成一个数组?
用正则表达式,运行结果图:
视频讲解链接:
StringTokenizer
split()
2、数组有length()方法吗?String有没有length()这个方法?
数组中没有length()这个方法,但是有length属性,String有length()这个方法。
视频讲解链接:
数组length属性
字符串 length()方法
3、运行时异常与一般异常有何异同?
异常表示程序运行时可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能会遇到的异常,是一种常见运行错误,java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
视频讲解链接:
运行时异常和非运行时异常
异常机制_异常分类_常见运行时异常详解
4、error和exception有什么区别?
思维导图:
视频讲解链接:
异常
error和exception
5、Java中的异常处理机制的简单原理和应用。
Java使用面向对象的方式来处理异常,它把程序中发生的每个异常都分别封装到一个对象来表示,该对象中包含有异常的信息。Java对异常进行了分类,不同类型的异常分别用不同的Java类表示,所有异常的根类为java.lang.Throwable,Throwable 下面又派生了两个子类:Error和Exception。如下图所示:
Java 为系统异常和普通异常提供了不同的解决方案,编译器强制普通异常必须 try…catch 处理或者用 throws 声明继续抛给上层调用方法处理,所以普通异常通常也称为 checked 异常,而系统异常可以处理也可以不处理,所以编译器不强制用try…catch处理或用throws声明,所以系统异常也称为 unchecked 异常。
视频讲解链接:异常处理机制
6、请说一下你最常见的5个runtime exception。
通过前面几个题的学习,这个题就自然游刃有余了!系统异常都是 RuntimeException 的子类,有印象也见得比较多的系统异常有:
- ArithmeticException,算数异常,最常见的是除0错误;
- NumberFormatException,数字格式化异常,常见的为类型转换时的异常;
- ArrayIndexOutOfBoundsException,数组下标越界异常;
- NullPointerException,空指针异常;
- ClassCastException,类型转换异常。
7、Java语言如何进行异常处理,关键字throws,throw,try,catch,finally 分别代表什么含义?在try块中可以抛出异常吗?
try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型
来捕捉(catch)它,或最后(finally)由缺省处理器来处理。在 try 块张红可以抛出异常。
- 用try来指定一块预防所有"异常"的程序。
- 紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的"异常"的类型。
- throw语句用来明确地抛出一个"异常"。
- throws用来标明一个成员函数可能抛出的各种"异常"。
- Finally为确保一段代码不管发生什么"异常"都被执行一段代码。
视频讲解链接:异常概述_try_catch_finally详解_throw抛出异常
8、try{} 中有一个return语句,那么紧跟在你这个try后的finally{} 里的code 会不会被执行,什么时候执行,在return前还是后?
会执行,在方法返回调用者前执行。可以看下面这个例子:
9、为了更好地理解try…finally,我们通过代码例子来分析一下其执行的过程。
下图的结果是 2。我们利用一个例子来理解一下这段代码的执行过程。
>从下图的运行结果可以得出:try 中的 return 语句调用的函数先于 finally 中调用的函数执行,也就是说return语句先执行,finally 语句后执行,所以返回的结果是2。 return 并不是让函数马上返回,而是 return 语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行语句后才真正开始返回。
10、final,finally,finalize 的区别?
- final 用于声明属性,方法和类,分表表示属性不变,方法不可覆盖,类不可继承。内部类要访问局部变量,局部变量必须定义为final类型。
- finally 是异常处理语句结构的一部分,表示其中的代码总是会执行的。
- finalize 是Object类中的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源的回收,如关闭文件等,JVM 不保证此方法总被调用。
视频讲解链接:final,finally,finalize的区别