有关Java 的一般问题 1. 什么是JVM? 为什么称Java 为跨平台的编程语言? Java 虚拟机(Java Virtual Machine)是可以执行Java字节码的虚拟机,每个Java 源文件将被编译成字节码文件,然后在JVM 中执行。Java 之所以被设计成可以在任意的平台运行,而不需要重写或者在不同的平台下重新编译,这些都要归功于 Java 虚拟机(JVM),因为JVM 非常了解特定的指令的长度以及底层硬件平台的特殊性。 2. JDK 和 JRE 之间的差异是什么? Java 运行环境(Java Runtime Enviroment) 是运行Java 程序的基本的Java 虚拟机,包括执行applet 的浏览器插件。JDK (Java Development Kit) 是为了开发,编译和执行Java 应用程序,针对 Java 的全功能的软件开发包,包含了 JRE,编译器和工具(比如说 JavaDoc 和Java Debugger)。 3. “static” 关键字是什么意思?在Java 里可以 override private 或 static 的方法吗? keyword mean ? Can you override private or static method in Java ? static 关键字表示,访问这个成员变量或方法时,不必获取它属于的类的实例。 Java 里的 static 方法不能被 override,因为 override 的机制是运行时(runtime)的动态绑定,而 static 方法是在编译时静态绑定的。static 方法并不与任何类的具体实例有关,因此无法应用继承的概念。 4. 在静态方法里可以访问非静态变量吗? Java 中的 static 变量归相应的类所有,它的值对于类的所有实例都是相同的。static 变量是在 JVM 加载类的时候初始化的。如果代码试图访问非静态的变量,而且不是通过类的实例去访问,编译器会报错,因为这些非静态变量还没有被创建呢,并且它们没有与实例相关联。 5. Java 支持哪些数据类型?什么是 Autoboxing 和 Unboxing? Java 语言支持的8 个基本数据类型如下: • byte • short • int • long • float • double • boolean • char Autoboxing 是指在基本数据类型和对应的包装(wrapper)类之间Java 编译器所做的自动转换。例如,编译器将 int 转换为 Integer,将 double 转换为 Double ,等等。逆向的转换称为 unboxing。 6. 在Jav a 中什么是方法的 Override(覆盖) 和 Overload(重载)? Java 中方法的 overload 发生的条件是,同一个类里,有两个或以上的方法名称完全相同,但参数列表不同。另一方面,方法的 override...