深入理解Hello World
2018-09-07 本文已影响0人
Mango_lxh
public class HelloWord {
public static void main(String[] args) {
String s;
s="Hello World!";
System.out.println("s="+s);
}
}
程序的执行流程:
- 编译器将 HelloWorld.java 源文件编译成字节码文件 HelloWorld.class ,再由 JVM 将
这个类加载到方法区的类代码内存区域。 - 虚拟机先通过类找到main方法(程序的入口方法),然后把一个
String[]
(字符串数组对象:空数组)类型的参数的地址传递到到主方法的args变量中,并在栈区为args开辟内存空间。 - 在栈区开辟一个空间存储一个String类型的变量s,s的值是垃圾值
- 在方法区的常量数据区开辟空间,属性即为:Hello World!,方法即为:toString(),变量s存储Hello World!对象的地址。
- 虚拟机找到标准类库中的System.class类并加载到内存中(即方法区的类代码区中),并调用println()方法将变量s的值打印到屏幕上(System.out为标准字节输出流对象)。
内存分析图:
2018-09-07_172054.png里面涉及的源文件,类文件,对象,方法,变量个数
1个java文件:HelloWorld.java
5个class类: HelloWorld.class、String[].class、String.class、System.class 、object.class
5个对象: “Hello World!”、String[]、System.out、System.in、System.error
2个变量:args、s
3个方法:main()、toString()、println()