除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
20 、sleep()和wait()有什么区别?
sleep是线程被调用时,占着cpu去睡觉,其他线程不能占用cpu,os认为该线程正在工作,不会让出系统资源,wait是进入等待池等待,让出系统资源,其他线程可以占用cpu
21、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
不可以
22、当一个线程进入一个对象的一个synchronizated方法后,其他线程是否可以进入此对象的其他方法?
可以去访问非Synchronized方法。
23、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
值传递
24、创建一个class对象有几种方法?分别是什么? 1. Class c=Class.for(“java.lang.String”); 2. String str=new Stirng();
Class c=Str.getClass(); 3.Class c=String.Class;
25、如何获取一个目录下有多少个文件? File f=new File(“D://”); Int count=f.list().length;
26、请写出下列代码的输出结果:
FatherCla
public class FatherClass { Public FatherClass() { } { System.out.println(“FatherClass Create”); public ChildClass() { ss Create
FatherCla
ss Create
ChildClass } Create
System.out.println(“ChildClass Create”); } } public static void main(String[] args) { FatherClass fc = new FatherClass(); ChildClass cc = new ChildClass(); } 27、请用Socket写一个客户端,并从中读出一行打印出来。 Socket socket=null; try
{
socket=new Socket(\ BufferedReader
pw
=
new
BufferedReader(new
InputStreamReader(socket.getInputStream())); System.out.println(pw.readLine()); pw.close(); }
catch(Exception e) {
e.printStackTrace(); } Finally { Try {
socket.close(); }
catch(IOException e {
e.printStackTrace();
} }
28、当一个对象不再被使用时,如何才能从内存中消失? 将该对象引用值为空
20、重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分? 答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求。
面试题:华为的面试题中曾经问过这样一个问题 - \为什么不能根据返回类型来区分重载\,快说出你的答案吧!
因为方法的重载时按照参数来区分的,如果按返回值,JVM不知道怎么区分,方法指定不明确;