• 深入理解java中HelloWorld的执行流程


    HelloWorld.java是我们学习java的第一个程序,简单的再也不能简单了,可是里面的原理以及执行流程大家都知道吗?最近在复习java知识,特地钻研了一番分享给大家!

    贴出HelloWorld的代码如下:

    public class HelloWorld {
        public static void main(String[] args)
        {    
                String  s ;
                  s = “Hello World!”;  //定义字符串s
              System.out.println(s); 
        }
    }
        

    分析内存图:

    HelloWorld的具体执行过程:

    1.执行HelloWorld.java文件,生成HelloWorld.class字节码文件;

    2.虚拟机执行HelloWorld.class,将这个类加载到内存中(即方法区的类代码区中);

    3. 虚拟机通过类找到HelloWorld的主方法(程序的入口方法),访问权限为public(公有可用),虚拟机传递String[](字符串数组对象:空数组)类型参数的地址到主方法的args中去,并在栈区为args开辟内存空间,返回一个void的返回值;

    4.定义一个String(标准类库中的)类型的变量(在栈区开辟空间)s,s的值不确定(垃圾值,编译无法通过);

    5. s = “Hello World!”,对象“Hello World!”在方法区的常量数据区开辟空间,属性即为:Hello World!,方法即为:toString(),变量s存放对象“Hello World!”的地址;

    6. 虚拟机找到标准类库中的System.class类并加载到内存中(即方法区的类代码区中),System.out为标准字节输出流对象(),并调用println()方法将变量s的值打印到屏幕上。

    PS: 虚拟机调用主方法时会创建三个默认对象:System.out(标准字节输出流对象)、System.in(标准字节输入流对象)和System.error(标准字节出错流对象).

    以上共涉及:

    1个java文件:HelloWorld.java

    4个class类: HelloWorld.class、String[].class、String.class、System.class

    5个对象: “Hello World!”、String[]、System.out、System.in、System.error

    2个变量:args、s

    3个方法:main()、toString()、println()

  • 相关阅读:
    LG5283 异或粽子
    LG2216 理想的正方形
    LG1484 种树
    洛谷3721 HNOI2017单旋(LCT+set+思维)
    洛谷3348 大森林 (LCT + 虚点 + 树上差分)
    CF1082E Increasing Frequency (multiset+乱搞+贪心)
    CF1082G Petya and Graph(最小割,最大权闭合子图)
    cf1082D Maximum Diameter Graph(构造+模拟+细节)
    洛谷3320 SDOI2015寻宝游戏(set+dfs序)(反向迭代器的注意事项!)
    CF613D Kingdom and its Cities(虚树+贪心)
  • 原文地址:https://www.cnblogs.com/xiaoming0601/p/5550802.html
Copyright © 2020-2023  润新知