2一、静态嵌套类和内部类的不一样?
答:静态嵌套类是被声明为静态(static)的内部类,它能够不依赖于外部类实例被实例化。而一般的内部类须要在外部类实例化后才能实例化。//仍是考的static的知识java
下面的代码哪些地方会产生编译错误?程序员
class Outer {编程
class Inner {}安全
public static void foo() { new Inner(); }this
public void bar() { new Inner(); }spa
public static void main(String[] args) {线程
new Inner();设计
}指针
}对象
Java中非静态内部类对象的建立要依赖其外部类对象,foo和main方法都是静态方法,静态方法没有this,也就是说没有所谓的外部类对象,所以没法建立内部类对象,若是要在静态方法中建立内部类对象,能够:new Outer().new Inner();
2二、抽象的方法是否能够被static,native,synchronized修饰?
不能,静态方法没法被重写,而抽象方法须要被子类重写;本地方法是由本地代码实现的,而抽象方法没有实现;synchronized关键字和方法实现的细节有关,抽象方法不涉及实现细节。
2三、静态变量和实例变量的区别。
静态变量:被static修饰,也称为类变量,因此它属于类不属于对象。一个类无论建立了多少个对象,静态变量在内存中有且只有一个拷贝。静态变量能够实现让多个对象共享内存。
实体变量:必须依赖于某一实例,须要先建立对象而后经过对象才能访问到它//记住一个属于类,另外一个属于对象
2四、能够从一个静态方法内部发出对非静态方法的调用?
不对,静态方法只能访问静态成员,由于非静态方法的调用要先建立对象,在调用静态方法时可能对象并无被初始化//写个静态方法本身试试呗
2五、对象克隆
实现Cloneable接口并重写Object类中的clone()方法;
实现Serializable接口,经过对象的序列化和反序列化实现克隆,能够实现真正的深度克隆
//话说clone对象好用不?
2六、运行时异常与受检异常有何异同?
异常表示程序运行过程当中可能出现的非正常状态,运行时异常表示虚拟机的一般操做中可能遇到的异常,是一种常见运行错误,只要程序设计得没有问题一般就不会发生。受检异常跟程序运行的上下文环境有关,即便程序设计无误,仍然可能因使用的问题而引起。Java器要求方法必须声明抛出可能发生的受检异常,可是并不要求必须声明抛出未被捕获的运行时异常。异常和继承同样,是面向对象程序设计中常常被滥用的东西,在Effective Java中对异常的使用给出了如下指导原则:
- 不要将异常处理用于正常的控制流(设计良好的API不该该强迫它的调用者为了正常的控制流而使用异常)
- 对能够恢复的状况使用受检异常,对编程错误使用运行时异常
- 避免没必要要的使用受检异常(能够经过一些状态检测手段来避免异常的发生)
- 优先使用标准的异常
- 每一个方法抛出的异常都要有文档
- 保持异常的原子性
- 不要在catch中忽略掉捕获到的异常
列出一些你常见的运行时异常?
答:
- ArithmeticException(算术异常)
- ClassCastException (类转换异常)
- IllegalArgumentException (非法参数异常)
- IndexOutOfBoundsException (下标越界异常)
- NullPointerException (空指针异常)
- SecurityException (安全异常)
2七、GC是什么?为何要有GC?
GC是垃圾收集的意思,内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会致使程序或系统的不稳定甚至崩溃,Java提供的GC功能能够自动监测对象是否超过做用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操做方法。Java程序员不用担忧内存管理,由于垃圾收集器会自动进行管理。要请求垃圾收集,能够调用下面的方法之一:System.gc() 或Runtime.getRuntime().gc() ,但JVM能够屏蔽掉显示的垃圾回收调用。
垃圾回收能够有效的防止内存泄露,有效的使用可使用的内存。垃圾回收器一般是做为一个单独的低优先级的线程运行,不可预知的状况下对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或全部对象进行垃圾回收。
//垃圾必须被回收掉,不论是生活仍是·······
2八、接口是否能够继承接口?抽象类可否可实现接口?抽象类是否可继承具体类?
接口能够继承接口,并且支持多重继承。抽象类能够实现接口,抽象类可继承具体类也能够继承抽象类。
29 、 .java源文件
一个.java源文件能够包含多个类,但一个源文件中最多只能有一个公开类并且文件名必须和公开类的类名彻底保持一致。
30、匿名内部类(Anonymous Inner Class)是否能够继承其它类?是否能够实现接口?
能够继承其余类或实现其余接口,在Swing编程和Android开发中经常使用此方式来实现事件监听和回调。