1、关于JVM运行的细节
(1)、JVM(Java虚拟机)的运行原理是什么?
JVM通过移植接口在具体的平台和操作系统上实现
(2)、Java代码编译执行的过程
开发人员编写Java代码(生成.Java文件)--编译-->字节码文件(.class文件)---->装入内存---->虚拟机中运行
☆(3)、JVM的运行过程
以下面的一小段代码为例:
例:
class HelloApp{
public static void main(String[] args){
System.out.println("Hello");
}
}
虚拟机JVM通过调用指定类的方法main启动,传递给main一个字符串数组参数,使被指定的类被装载,同时链接该类所使用的其他类型并初始化它们;
(通过调用类HelloAPP中的main方法启动Java虚拟机,传递给main一个字符串数组参数,即包含“run”“virtual”“machine”的数组;
开始试图执行类HelloAPP的main方法,发现该类并未被装载(虚拟机不包含当前该类的二进制表),于是虚拟机使用ClassLoader企图寻找这样的二进制表(若未找到则抛出异常)。在被装载后,main方法被调用之前,必须对HelloAPP与其他类型进行链接与初始化
)
(4)、链接
①、检验:查被装载的主类的符号以及语义
②、准备:创建类和接口的静态域,并且把这些域初始化为标准默认值
③、解析:检查主类对其他类或接口的符号引用
基本运行方式为:
2、为什么Java会具有平台无关性?
Java同一些在编译后直接转化为底层机器指令的编程语言不同,Java编译后转换为与底层机器无关的字节码(.class文件),JVM虚拟机运行时,会根据实际机器的不同,将中间生成的字节码转换为不同的CPU指令,从而进行解释。
3、面向对象的特征有哪些?
(1)、抽象
(2)、继承
(3)、封装
(4)、多态性
4、Java的数据类型有哪些?
5、基本数据类型所对应的封装类
int-->Integer
boolean-->Boolean
char-->Character
byte-->Byte
short-->Short
long-->Long
float-->Float
double-->Double
6、Collocation与Collocations
·Collocation是集合类的上级接口,继承于他的接口主要有Set和List
·Collocations是针对集合类的一个帮助类
7、final、finally与finalize
final:用于声明属性、方法和类,属性不变,方法不可覆盖,类不可继承
finally:异常处理语句结构的一部分,表示总是执行
finalize:是Object类的一个方法,在垃圾收集器执行时会调用被回收对象的此方法,可覆盖此方法提供垃圾收集时的其他资源
8、接口与抽象类之间的相同点与不同点
相同点:
(1)、都不能被实例化
(2)、都能包含抽象方法
(3)、都是上层的抽象层
区别:
(1)、接口只能有抽象方法,抽象类既可以有抽象方法【注】也可以有非抽象方法
(2)、一个类只能继承一个父类(抽象或者非抽象),而一个类可以实现多个接口
【注】:
抽象方法:只有方法声明,而没有具体方法体的方法