- 这两天得好好睡一下
类的析构函数是一个对象被( )时自动调用的。
正确答案: B 你的答案: A (错误)java
析构函数(destructor) 与 构造函数 相反,当对象结束其 生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数每每用来作“清理善后” 的工做(例如在创建对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。
java中有析构函数,但咱们通常用不到它,由于java有自动内存回收机制,无需程序员来释放,也就不要担忧内存泄露,只不过java中析构函数所采用的方式不是C++中的那样前加~号,在java中 对象析构时会调用void finalize()方法,所以你若是确实须要析构的话就能够为你写的类添加一个void finalize(){}方法,来完成你所须要的工做
class X{ Y y=new Y(); public X(){ System.out.print("X"); } } class Y{ public Y(){ System.out.print("Y"); } } public class Z extends X{ Y y=new Y(); public Z(){ System.out.print("Z"); } public static void main(String[] args) { new Z(); } }
正确答案: C程序员
初始化过程: 1. 初始化父类中的静态成员变量和静态代码块 ; 2. 初始化子类中的静态成员变量和静态代码块 ; 3.初始化父类的普通成员变量和代码块,再执行父类的构造方法; 4.初始化子类的普通成员变量和代码块,再执行子类的构造方法; 静态代码块和静态变量属于同级别的,按声明顺序加载 (1)初始化父类的普通成员变量和代码块,执行 Y y=new Y(); 输出Y (2)再执行父类的构造方法;输出X (3) 初始化子类的普通成员变量和代码块,执行 Y y=new Y(); 输出Y (4)再执行子类的构造方法;输出Z 因此输出YXYZ
下列哪一个选项是Java调试器?若是编译器返回程序代码的错误,能够用它对程序进行调试。
正确答案: C 你的答案: 空 (错误)函数
javac.exe是编译.java文件 java.exe是执行编译好的.class文件 javadoc.exe是生成Java说明文档 jdb.exe是Java调试器 javaprof.exe是剖析工具