什么是字节码?
Java中引入了虚拟机的概念,即在机器和编译程序之前加入了一层抽象的虚拟机器。这台虚拟机器在任何平台上都提供给编译程序一个共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,再由解释器来将虚拟机中的代码转换为特定系统的机器能执行的代码。Java中,这种虚拟机能理解的代码就叫做字节码(即扩展名字为.class的文件)。不同的平台有着不同解释器,但是虚拟机是相同的。Java的源程序经过编译器编译后编程字节码,字节码有虚拟机解释执行,虚拟机将每一条要执行的字节码发送给解释器,解释器将其翻译为特定机器上的机器码执行。
Java源代码–>编译器–>jvm可执行的Java字节码–>jvm–>jvm中的解释器–>特定机器可以执行的二进制机器码。
采用字节码的最大好处是什么?
Java通过使用字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。而且,字节码不转移对一种特定的机器,所以Java程序无需重新编译就可以在多种不同的机器上运行。
什么是Java虚拟机?
任何一种能够运行Java字节码的软件都可以看成是Java的虚拟机(jvm)
什么是Java程序的主类?应用程序和小程序的主类有什么不同?
一个程序中可以有多个类,但只有一个主类。在Java应用程序中,主类指的是包含main()方法的类。在Java小程序中,这个主类是一个继承自系统类Japplet或者Applet的子类。应用程序中主类不一定要求是public的,但是Java小程序中必须要求主类是public的。主类是Java程序执行的入口。
什么是JDK?什么是JRE?
JDK:是给开发者提供的开发工具箱。除了包括完整的JRE(Java runtime environment),Java运行环境,还包括了其他供开发者使用的工具包。
JRE:普通用户就只用安装JRE来运行Java程序。而程序开发者必须安装JDK来编译调试程序。
接口和抽象类的区别是什么?
1.接口中所有的方法都是默认public的,所有方法在接口中都不能有实现,抽象类可以有非抽象的方法
2.接口中的实例变量默认是final的,抽象类中不一定。
3.一个类可以实现多个接口,但只能实现一个抽象方法。
4.一个类在实现接口时必须实现接口中所有的方法,而在实现抽象类时不一定。