Java基础知识问答总结

Java基础知识问答

1、error 和exception 有什么区别?

答:
1、error 表示系统级的错误和程序不必处理的异常,是恢复很困难的情况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况;
2、exception 表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;它表示如果程序运行正常,从不会发生的情况。

2、常见的runtime exception ?

答:
ClassCastException类转换异常
IllegalArgumentException非法参数异常
IndexOutOfBoundsException数组越界异常
NullPointerException空指针异常
ArrayStoreException数据存储异常。

3、try 里有一个return 语句,那么紧跟在后的finally里的code会不会被执行,什么时候被执行,在return 前还是后?

答:会执行,在return 前执行

4、final, finally, finalize 的区别?

答:
final:修饰符(关键字);
1、如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承,因此一个类不能既被声明为abstract的,又被声明为final 的;
2、将变量或方法声明为final,可以保证它们在使用中不被改变;被声明为final 的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改;
3、被声明为final 的方法也同样只能使用,不能重载。
finally:再异常处理时提供finally 块来执行任何清除操作;如果抛出一个异常,那么相匹配的catch 子句就会执行,然后控制就会进入finally 块(如果有的话)。
finalize:方法名;Java 技术允许使用finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object 类中定义的,因此所有的类都继承了它。子类覆盖finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

5、try 里有多个catch语句块是如何执行的?

答:
对于try里面发生的异常,他会根据发生的异常和catch里面的进行匹配(怎么匹配,按照catch块从上往下匹配),当它匹配某一个catch块的时候,他就直接进入到这个catch块里面去了,后面在再有catch块的话,它不做任何处理,直接跳过去,全部忽略掉。

6、List,Set,Map 是否继承自Collection 接口?

List,Set 是;Map 不是

7、sleep() 和wait() 有什么区别?

答:
sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep 不会释放对象锁。
wait 是Object 类的方法,对此对象调用wait 方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify 方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。

8、当一个线程进入一个对象的一个synchronized 方法后,其它线程是否可进入此对象的其它方法?

其它线程只能访问该对象的其它非同步方法,同步方法则不能进入

猜你喜欢

转载自blog.csdn.net/u012002125/article/details/106753057