在java学习中遇到的一些经典问题和解答(5)

1.在Java中,对象什么时候可以被垃圾回收

当对象对当前使用这个对象的应用程序变得不可触及的时候,这个对象就会被垃圾回收;
通俗一点,当没有任何对象的引用指向该对象时+下次垃圾回收周期来到时=>对象被回收;

2.JVM的永久代中会发生垃圾回收么?

垃圾回收不会发生在永久代,但如果永久代满了或者是超过了临界值,会触发完全垃圾回收(full GC)。如果你仔细查看垃圾收集器的输出信息,就会发现永久代也是被回收的。

3.Java中的两种异常类型是什么?他们有什么区别?

异常分两种大的异常类型,运行异常和受检查异常,这两种异常的区别:

1、运行时异常((RuntimeException, 又叫非检查异常 )

运行异常的特点是 Java编译器不去检查它,也就是说,当程序中可能出现这类异常时,即使没有用try…catch语句捕获它,也没有用throws字句声明抛出它,还是会编译通过。

2、受检查异常

除了运行异常外,其他异常都属于受检查异常,这种异常的特点是要么用 try…catch捕获处理,要么用throws语句声明抛出,否则编译不会通过。

两者的区别

    非检查异常表示无法让程序恢复运行的异常,导致这种异常的原因通常是由于执行了错误的操作。一旦出现错误,建议让程序终止。

受检查异常表示程序可以处理的异常。如果抛出异常的方法本身不处理或者不能处理它,那么方法的调用者就必须去处理该异常,否则调用会出错,连编译也无法通过。

对于运行异常,建议不要用 try…catch…捕获处理,应该在程序开发调试的过程中尽量的避免,当然有一些必须要处理的,自己知道了那个部分会出现异常,而这种异常你要把它处理的你想要的结果,例如:空值处理。

4.Java中Exception和Error有什么区别?

Exception和Error都是Throwable的子类。
Exception用于用户程序可以捕获的异常情况;
Error定义了不期望被用户程序捕获的异常。

5.throw和throws有什么区别?

1.Throw用于方法内部,Throws用于方法声明上。
2.Throw后跟异常对象,Throws后跟异常类型。
3.Throw后只能跟一个异常对象,Throws可以一次声明多种异常类型。

6.异常处理完成后,Exception对象会发生什么变化?

Exception对象会在下一个垃圾回收过程中被回收掉。

7.finally代码块和finalize()方法有什么区别?

无论是否抛出异常,finally代码块都会执行,它主要是用来释放应用占用的资源。
finalize()方法是Object类的一个protected()方法,它是对象被回收之前由java虚拟机调用的。

8.什么是Applet?

Java applet是能够被包含在html页面中并且能够被启用了java的客户端浏览器执行的程序。
applet主要是用来创建动态交互的web应用程序。

9.解释一下Applet的生命周期?

applet可以经历以下的状态?
Init:每次加载的时候都会被初始化;
Start:开始执行applet;
Stop:结束执行applet;
Destroy:卸载applet之前,最后的清理工作。

10.当applet被载入的时候会发生什么?

首先,创建applet控制类的实例,然后初始化applet,最后开始运行。

猜你喜欢

转载自blog.csdn.net/huangpeng_HP/article/details/86590785
今日推荐