详解HelloWorld执行过程

public class HelloWorld {
    public static void main(String[] args) {
        String s;
        s = "HelloWorld";
        System.out.println(s);
    }
}

这段代码我相信大家是再熟悉不过的了

运行过程

那么java是如何执行这段代码的呢?
1.调用java的编译命令
javac HelloWorld.java

  • java编译器首先找到源文件中的public class,再找根据public class找到源文件中的其他类,java编译器会根据每一个类生成一个字节码文件(JVM可以读懂的文件类型)

2.通过java命令执行刚才生成的.class文件
java HelloWorld

  • 系统找到文件中唯一的主类public class 。
  • 据public static关键字找到跟主类关联可执行的main方法。
  • String [] args:系统会传递一个空的字符串数组给主方法。系统加载String [].class字节码文件到方法区,系统会为args变量在主线程的栈帧中开辟一块空间(存放String []数据的地址)指向堆中存放的数据。
  • String s:系统加载String.class字节码文件到方法区,在主线程栈帧中为s变量开辟一块空间(存放数据的地址),此时s的值还没有确定(垃圾值,编译无法通过)。
  • s=”HelloWorld”:字符串”HelloWorld”被存放到方法区的常量区中,并让s指向该地址。
  • System.out.println(s):系统加载System.class字节码文件到方法区,并且系统会默认在堆区创建System.out、System.in、System.err三个对象。
  • 字符串在被输出时会自动调用toString()方法。

    内存图:

    内存图
    3.得到输出结果
    HelloWorld

    相关概念

    • 1个源文件:HelloWorld.java
    • 4个字节码文件:HelloWorld.class、String[].class、String.class、System.class
    • 5个对象:”HelloWorld”、String[]、System.out、System.in、System.err
    • 2个变量:args、s
    • 3个方法:main()、System.out.println()、toStting()

小小的HelloWorld竟然包含了如此多的秘密!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值