Java里面的十万个为什么
文章目录
- Java里面的十万个为什么
-
-
- 1.不是说 JVM 是运行 Java 程序的虚拟机吗?那 JRE 和 JVM 的关系是怎么样的呢?
- 2.配置环境变量的时候,为什么选择用户变量?用户变量与系统变量有什么区别?
- 3.当编译 C 程序时,不仅需要指定存放目标文件的位置,还需要指定目标文件的文件名,这里使用 javac 编译 Java 程序时怎么不需要指定目标文件的文件名呢?
- 4.我想学习 Java 编程,到底学习 Eclipse 好,还是学习 IntelliJ IDEA 好呢?
- 5.API 文档是什么?
- 6.为什么要学习查看 API 文档的方法?
- 7.什么是变量?变量有什么用?
- 8.int[] 是一种数据类型吗?怎么使用这种类型呢?
- 9.能不能只分配内存空间,不赋初始值呢?
- 10.为什么要我记住这些异常信息?
- 11.为什么有栈内存和堆内存之分?
- 12.构造器不是没有返回值吗?为什么不能用 void 声明呢?
- 13.为什么方法的返回值类型不能用于区分重载的方法?
-
1.不是说 JVM 是运行 Java 程序的虚拟机吗?那 JRE 和 JVM 的关系是怎么样的呢?
简单地说,JRE 包含 JVM 。JVM 是运行 Java 程序的核心虚拟机,而运行 Java 程序不仅需要核心虚拟机,还需要其他的类加载器,字节码校验器以及大量的基础类库。JRE 除包含 JVM 之外,还包含运行 Java 程序的其他环境支持。
一般而言,如果只运行 Java 程序, 可以只安装 JRE ,无需安装 JDK。
2.配置环境变量的时候,为什么选择用户变量?用户变量与系统变量有什么区别?
用户变量和系统变量并没有太大的差别,只是用户变量只对当前用户有效,而系统变量对所有用户有效。为了减少自己所做的修改对其他人的影响,故设置用户变量避免影响其他人。对于当前用户而言,设置用户变量和系统变量的效果大致相同,只是系统变量的路径排在用户变量的路径之前。这可能出现一种情况:如果 Path 系统变量的路劲里包含了 java 命令,而 PATH 用户变量的路劲里也包含了 java 命令,则优先执行 Path 系统变量路径里面包含的 java 命令。
3.当编译 C 程序时,不仅需要指定存放目标文件的位置,还需要指定目标文件的文件名,这里使用 javac 编译 Java 程序时怎么不需要指定目标文件的文件名呢?
使用 javac 编译文件只需要指定存放目标文件的位置即可,无须指定字节码文件的文件名。因为 javac 编译后生成的字节码文件有默认的文件名:文件名总是以源文件所定义类的类名作为主文件名,以 .class 作为扩展名。这意味着如果一个源文件里定义了多个类,将编译生成多个字节码文件。事实上,指定目标文件存放位置的 -d 选项也是可以省略的,如果省略该选项,则意味着将生成的字节码文件放在当前路径下。