【301天】我爱刷题系列060(2017.12.03)

叨叨两句

  1. 这两天得好好睡一下

牛客网——java专项练习039

1

类的析构函数是一个对象被( )时自动调用的。
正确答案: B 你的答案: A (错误)java

  1. 创建
  2. 撤消
  3. 赋值
  4. 引用
析构函数(destructor) 与  构造函数 相反,当对象结束其 生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数每每用来作“清理善后” 的工做(例如在创建对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。
java中有析构函数,但咱们通常用不到它,由于java有自动内存回收机制,无需程序员来释放,也就不要担忧内存泄露,只不过java中析构函数所采用的方式不是C++中的那样前加~号,在java中 对象析构时会调用void finalize()方法,所以你若是确实须要析构的话就能够为你写的类添加一个void finalize(){}方法,来完成你所须要的工做

2

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. ZYXX
  2. ZYXY
  3. YXYZ
  4. XYZZ
初始化过程: 
1. 初始化父类中的静态成员变量和静态代码块 ; 
2. 初始化子类中的静态成员变量和静态代码块 ; 
3.初始化父类的普通成员变量和代码块,再执行父类的构造方法;
4.初始化子类的普通成员变量和代码块,再执行子类的构造方法; 

 静态代码块和静态变量属于同级别的,按声明顺序加载


 
(1)初始化父类的普通成员变量和代码块,执行  Y y=new Y();  输出Y 
(2)再执行父类的构造方法;输出X
(3) 初始化子类的普通成员变量和代码块,执行  Y y=new   Y();  输出Y 
(4)再执行子类的构造方法;输出Z
 因此输出YXYZ

3

下列哪一个选项是Java调试器?若是编译器返回程序代码的错误,能够用它对程序进行调试。
正确答案: C 你的答案: 空 (错误)函数

  1. java.exe
  2. javadoc.exe
  3. jdb.exe
  4. javaprof.exe
javac.exe是编译.java文件
java.exe是执行编译好的.class文件
javadoc.exe是生成Java说明文档
jdb.exe是Java调试器
javaprof.exe是剖析工具