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()