深入理解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);
    }
}

程序的执行流程:

  1. 编译器将 HelloWorld.java 源文件编译成字节码文件 HelloWorld.class ,再由 JVM 将
    这个类加载到方法区的类代码内存区域。
  2. 虚拟机先通过类找到main方法(程序的入口方法),然后把一个String[](字符串数组对象:空数组)类型的参数的地址传递到到主方法的args变量中,并在栈区为args开辟内存空间。
  3. 在栈区开辟一个空间存储一个String类型的变量s,s的值是垃圾值
  4. 在方法区的常量数据区开辟空间,属性即为:Hello World!,方法即为:toString(),变量s存储Hello World!对象的地址。
  5. 虚拟机找到标准类库中的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()

上一篇下一篇

猜你喜欢

热点阅读