1.名词解释:构造方法、抽象
构造方法:是一个与类名相同的类方法。每当使用new关键字创建一个对象,为新建对象开辟内存空间后,Java系统将自动调用构造方法初始化这个新建对象,它不能通过对象引用来调用。它只属于类,不属于任何一个对象。定义时,构造方法没有返回类型;它具有多态性,可以被重载(参数不同)。如果用户没有在自定义类中定义构造方法,系统将为该类添加一个默认的空构造方法。
抽象:从被研究对象中舍弃个别的、非本质的或与研究主旨无关的次要的特征,而抽取与研究有关的共性内容加以考察,形成对研究问题正确、简明扼要的认识。抽象与具体,就是一般性与特殊性,个性与共性的关系。在Java中,对象就是对客观事物的抽象,而类则是对对象的抽象。
2.对象位于内存何处?声明能引用对象的实质是什么?
对象被存储在堆内存中。
声明能引用对象的实质是在栈中存储了对象的地址。
3.对象和基本数据作为参数传递时,有什么不同?
对象作为参数传递,是引用传递,即传的是这个对象的地址;基本数据作为参数传递,是值传递。
4.在自定义对象中写finalize方法,什么情况下被调用?
如上图,当novel=null;
时,对象没有任何引用,成为垃圾对象,但此时并没有执行finalize方法使垃圾回收,当执行了System.gc();
,“提醒”系统进行一次垃圾释放,才调用了finalize方法。
5.对象在什么条件下成为垃圾?什么情况下释放垃圾对象,如何证明一个对象被释放了?
如上题当对象没有任何引用时,成为垃圾对象,但此时并没有被释放;当内存不够用时才会执行垃圾回收,或者当执行了System.gc();
,“提醒”系统进行一次垃圾释放,系统才会有可能执行垃圾回收。如何证明一个对象被释放了?? 目前还没想到方法。
6.final修饰符有什么作用?
以final修饰类属性,则该属性为常量;如果修饰方法,则方法成为最终方法,在子类当中不能被覆盖。保证了程序的安全性和正确性。
7.static修饰属性和方法有什么特点?
static修饰的域变量不属于任何一个类的具体对象,而专属于类,特点为:它被保存在类的内存区(堆中)的公共存储单元中,而不是保存在某个对象的内存区中。
static修饰的方法称为静态方法,它属于类方法。不属于类的任何对象,具有如下特点:
- static方法是类方法,但可以被所有对象所访问。调用这个方法时,可采用“对象应用.方法名”,也可采用“类名.方法名”。
- static方法内部的代码,只能访问类中的static属性或方法,不能访问类中的非static属性或方法(因为它们属于对象);但非static方法(对象方法)可以访问static属性或方法。
- main方法是特殊的静态方法。
8.Application程序执行时,为什么不能带后缀名?
因为用java运行Application时,时执行一个类,如果若写 java xxx.yyy,是代表要运行 package xxx 中的class yyy 里面的 main(String[]),所以当写 java xxx.class 时, 它会以为要找一个叫xxx的package里面的一个叫class的class.