1、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
1.接口可以继承接口..但是要使用extends~而不是用implements
如:interface a{} ;interface b extends a{}
2.抽象类可以实现接口..比如java.util中的AbstractCollection类就是实现的Collection接口
3.抽象类可以继承实体类
下面这段执行无误的代码说明的所有的问题:
interface MyInterface {
}
interface AnotherInterface extends MyInterface {
}
class EntityClass {
}
abstract class AbstractClass extends EntityClass implements MyInterface {
}
2、是否可以从一个static方法内部发出对非static方法的调用?
static方法内部不能直接调用非静态方法,
可以在调用之前实例化非静态方法所在的类,再用类点方法来调用。
例:非静态方法是className类里面的method();
className cn=new className();
cn.method();
这样就可以了
3、HashMap和Hashtable的区别是什么?
Hashtable和HashMap的区别:
1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;
2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于HashMap,则需要额外的同步机制。但HashMap的同步问题可通过Collections的一个静态方法得到解决:
Map Collections.synchronizedMap(Map m)
这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的。
3.在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断
4、final, finally, finalize的区别是什么?
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。
finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的
5、Error和Exception有什么区别?
error:语法错误、逻辑错误、运行错误
exception:越界、数据丢失,内存泄露
6、GC是什么? 为什么要有GC?
GC:Java的垃圾回收器; System.gc()来强制进行一次立即的内存清理。
7.采用wait(),notify()或者notifyAll()写一个JAVA多线程程序描述生产者-消费者问题。