1.什么是Java虚拟机?Java为什么被称作是“平台无关的编程语言”?
Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。
Java被设计成允许应用程序可以在任意的平台运行,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。
2、JDK和JRE的区别是什么?
Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。它同时也包含了执行applet需要的浏览器插件。Java开发工具包(JDK)是完整的Java软件开发包,包含了JRE,编译器和其他的工具(比如:JavaDoc,Java调试器),可以让开发者开发、编译、执行Java应用程序。
3、JRE、JDK、JVM三者有什么联系?
JDK(Java Development Kit)包含JRE(Java Runtime Environment)、JRE包含JVM(Java Virtual Machine)
4、Java中的基本类型有哪些?它们的字节数,bit数分别是多少?什么是自动拆装箱?
Java中的基本数据类型有8个:
整数值型:byte、short、int、long,
字符型:char
浮点类型:float、double
布尔型:boolean
byte(1个字节,8bit)、short(2个字节,16bit)、int(4个字节,32bit)、long(8个字节,64bit)、float(4个字节,32bit)、double(8个字节,64bit)、char(2个字节,16bit)、boolean(1个字节,8bit)。
装箱是把基本数据类型封装成包装类型;拆箱是把包装类型变成基本数据类型;
整数默认int型,小数默认是double型。Float和long类型的必须加后缀。
String是引用类型不是基本类型,引用类型声明的变量是是一个引用地址,实体在堆中。引用类型包括类、接口、数组等。String类是final修饰符修饰的。
包装类属于引用类型,自动装箱和拆箱就是基本类型和引用类型之间的转换。
基本类型转换为引用类型后,可以new出对象,从而调用包装类中封装好的方法进行基本类型之间的转换或者toString
5、.Java支持多继承么?
不支持,Java不支持多继承。每个类都只能继承一个类,但是可以实现多个接口。
6、同步方法和同步代码块的区别是什么?
同步方法:即有synchronized关键字修饰的方法。
由于java的每个对象都有一个内置锁,当用此关键字修饰方法时, 内置锁会保护整个方法。在调用该方法之前,需要获得内置锁,否则就处于阻塞状态。
.同步代码块 :即有synchronized关键字修饰的语句块。 被该关键字修饰的语句块会自动被加上内置锁,从而实现同步。
7、Java集合类框架的基本接口有哪些?
Collection:代表一组对象,每一个对象都是它的子元素;
Set:(无序、不可重复);
List:有序、可重复;
Map:可以把键(key)映射到值(value)的对象,键不能重复。
8、数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用Array而不是ArrayList?
Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。
Array大小是固定的,ArrayList的大小是动态变化的。
ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。当能确定长度并且数据类型一致的时候就可以用数组Array,其他时候使用ArrayList
9、Java中垃圾回收有什么目的?什么时候进行垃圾回收?
垃圾回收的目的是查找和回收(清理)无用的对象来释放和重用资源,以便让JVM更加有效的使用内存。但是它不能保证垃圾回收一定会进行,具体什么时候进行垃圾回收取决于具体的虚拟机,不同的虚拟机有不同的对策
36.System.gc()和Runtime.gc()的作用是什么?
这两个方法用来提示JVM要进行垃圾回收。但是,立即开始还是延迟进行垃圾回收是取决于JVM的。