1.为什么Java中有些接口没有任何方法?
这些没有任何方法声明的接口又被称为标识接口,标识接口对于实现它的类没有任何语义上的要求,它仅仅充当一个标识的作用,用来表明它的类属于一个特定的类型。
2.java中的clone方法有什么作用?
Object类提供了一个clone()方法,这个方法的作用是返回一个对象的复制。返回的是一个新的对象,而不是一个引用。
使用clone()方法的步骤:
- 实现clone的类首先需要继承Cloneable接口。Cloneable接口实质上是一个标识接口,没有任何接口方法。
- 在类中重写Object类的clone()方法。
- 在clone()方法中调用super.clone()方法。
- 把浅复制的引用指向原型对象新的克隆体。
深复制:
3.什么是反射机制?
反射机制提供的主要功能有:得到一个对象所属的类;获取一个类中的所有成员变量和方法;在运行时创建对象;在运行时调用对象的方法。
获取Class类的方法:Class.forName("类的路径");类名.class;实例.getClass();
4.多态的实现机制是什么
Java语言中多态主要有两种表现方式:
- 方法的重载。编译时就可以确定调用哪个方法,是一种编译时多态。
- 方法的覆盖。子类可以覆盖父类的方法,因此同样的方法会在父类与子类中有着不同的表现形式。同时,基类的引用变量可以指向子类的实例对象。而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体事例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。通过这种动态绑定实现了多态。由于只有在运行时才能确定调用哪个方法,因此称为运行时多态。
5.final的作用是什么?
用于声明属性、方法和类,分别表示属性不可变,方法不可覆盖,类不能被继承。
6.static关键字有什么作用?
- static成员变量 可以达到全局的效果
- static成员方法 是类的方法,不需要创建对象就可以调用。实现单例模实。
7.==、equals、hashcode有什么区别
==用来比较两个变量的值是否相等,对于引用型变量,比较是否指向同一个对象。equals是Object类提供的方法之一,默认是使用==比较两个对象。但其可以被覆盖,所以可以通过覆盖的方法让它不是比较引用而是比较数据内容。hashcode()方法也是Object类提供的方法之一,返回对象在内存中地址转换成的一个int值。
8.为什么说哦java是平*立性语言
保证java具有平*立性的机制为中间码和java虚拟机。java程序被编译后不是生成在硬件平台上可执行的代码,而是生成了一个“中间码”、不同的硬件平台上会安装有不同的JVM,有JVM来负责把中间码翻译成硬件平台能执行的代码。由此可以看出JVM不具有平*立性,而是与硬件平台相关的。
9.什么是GC?
栈内存主要用来存放基本数据类型的变量与引用变量。栈内存的管理是通过压栈和弹栈操作来完成的,以栈帧为基本单位来管理程序的调用关系,每当有函数调用时,都会通过压栈方式创建新的栈帧,每当函数调用结束后都会通过弹栈的方式释放栈帧。
堆内存主要用来存放运行时创建的对象