入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

很实用的java面试题及Java中的异常处理机制(3)

创建时间:2017-12-22 投稿人: 鲸鱼 浏览次数:140

java面试题

1. 覆盖和重载是什么?

覆盖发生在子类与父类之间,子类中的方法与父类中的某个方法的名称和参数完全相同,通过子类实例调用这个方法时,将调用子类中的定义方法。

重载是指在一个类中,有多个相同名称的方法,但是他们的参数列表(个数或类型)不同,当调用该方法时,根据传递的参数类型调用对应的方法。当参数列表相同但返回值不同时,将会出现编译错误,这并不是重载,因为jvm无法根据返回值类型来判断应该调用哪个方法。

2. 构造器可被重写?

构造方法是不能重写的,但是可以重载。

3. String s=new String("xyz");创建了几个String Object?

创建了两个String对象,一个保存的引用地址,一个保存实际的值。

4. 线程的几种可用状态

就绪(Runnable):线程准备运行,不一定立马就能开始执行。

运行中(Running):进程正在执行线程的代码。

等待中(Waiting):线程处于阻塞的状态。

睡眠中(Sleeping):线程被强制睡眠。

I/O阻塞(Blocked on I/O):等待I/O操作完成。

同步阻塞(Blocked on Synchronization):等待获取锁。

死亡(Dead):线程完成了执行。


异常的捕捉

采用try…catch方式对异常进行拦截并处理,语法格式为:

很实用的java面试题及Java中的异常处理机制(3)

可以有多个catch语句块,用来拦截不同类型的异常。

当程序运行过程中发生不同类型的异常情况,执行不同类型异常的catch语句块代码,也就是catch语句块拦截相应类型的异常并执行相关的语句块。如果程序发生没有在catch中拦截的异常类型,此异常将不会被拦截。

拦截相同类型的异常事件

try语句块中的所有编译时异常必须在catch中进行拦截。如果存在没有拦截处理的编译时异常,程序编译不能通过。或者通过throws关键字进行声明抛出。

案例:编译时异常必须进行拦截或者通过throws进行声明抛出

很实用的java面试题及Java中的异常处理机制(3)

捕获异常的顺序

catch语句块中的异常类从上到下要按照子类到父类的顺序,否则编译不能通过。也可以采用父类的类型捕获子类类型的异常。

发生异常时的执行顺序

当try语句块中的代码发生异常情况时,程序的执行流程会直接执行拦截异常的catch语句块中的代码,当catch语句块中的代码执行结束后,会接着执行try…catch语句后面的语句。

发生异常时,执行流程会发生改变,catch语句块相当于对异常进行了处理,所以执行流程会从try…catch后面的语句继续执行,而不会从发生异常的位置继续执行,所以不要将所有的语句都放在try语句块中。

案例:

很实用的java面试题及Java中的异常处理机制(3)

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。