Java基础
1.final,finally,finalize的区别?(40)
final用于修饰属性,方法和类,表示属性不可修改,方法不可重载,类不可继承。
finally是在异常处理中出现的关键字,表示一段一定会执行的代码块。
finalize是Object类中的一个方法,在垃圾回收器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源的回收。
2.运行时异常与一般异常有何异同?(41)
相同点:都是Throwable类的子类。
不同点:运行时异常一般都是程序员的错误,出现运行时异常时都是由JVM进行处理,而一般异常是JAVA编译器强制要求我们必须对出现的这些异常进行catch。
3.error和exception有什么区别?(42)
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
4.请写出你最常见到的5个runtime exception?(44)
NullPointerException、ArithmeticException、ArrayIndexOutOfBoundsException、ClassCastException、InputMismatchException 。
5.Java语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗? (45)
Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。
在Java中,每个异常都是一个对象,它是Throwable类或其子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并可以对其进行处理。
Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果系统会抛出(throw)一个异常对象,可以通过它的类型来捕获(catch)它,或通过总是执行代码块(finally)来处理;try用来指定一块预防所有异常的程序;
catch子句紧跟在try块后面,用来指定你想要捕获的异常的类型;
throw语句用来明确地抛出一个异常;
throws用来声明一个方法可能抛出的各种异常(当然声明异常时允许无病呻吟);
finally为确保一段代码不管发生什么异常状况都要被执行;
try块中能抛出异常
6.sleep() 和 wait() 有什么区别?(47)
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。