1、什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?
Java虚拟机是一个可以执行Java字节码文件的虚拟进程。
编译器把Java源文件编译成能被字节码文件,然后再通过类加载器加载到不同平台的虚拟机里执行,这样就实现了“一次编译,到处运行”。
2、JDK和JRE的区别是什么?
JRE是Java运行时环境,它包括Java虚拟机、Java核心类库和支持文件,但不包含编译器、调试器等开发工具。
JDK是Java开发工具包,包含了JRE,编译器和其他的工具(比如:JavaDoc,Java调试器),可以让开发者开发、编译、执行Java应用程序。
3、static关键字是什么?Java中是否可以覆盖(override)一个private或者是static的方法?
static关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。
Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。
java中也不可以覆盖private的方法,因为private修饰的变量和方法只能在当前类中使用,如果是其他的类继承当前类是不能访问到private变量或方法的,当然也不能覆盖。
4、是否可以在static环境中访问非static变量?
当类被Java虚拟机载入的时候,会对static变量进行初始化。如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。