の原則のHello Worldの実装

1  パブリック クラスのHelloWorld {
 2      公共 静的 ボイドメイン(文字列[]引数)
 3。     {    
 4              ストリングS;
 5                S =の"Hello World!";   // 定義ストリングS 
6            のSystem.out.println(S); 
 7      }
 8。 }
↑↑↑単純なJavaプログラムのHelloWorldです 
以下に示すようにJavaコードがコンパイルされたJavaソースコードは、コンパイラ、フローチャートによって達成されます。

以下に示すようにJavaバイトコードは、JVM実行エンジン、フローチャートによって行われる行います。

次のようにプログラムの実行は次のとおりです。 

①HelloWorld.java HelloWorld.classをバイトコードファイルにファイルをコンパイルするのjavacを使用。(JDKのjavacコンパイラ開発ツールキットは、ツールおよびランタイム環境のJREが含まれています)

 JVMのメモリにロードされた②クラスローディング段階は、メインプログラムは入口にされ、その後、いくつかを達成するために、仮想マシンは、JVMバイトコードインタプリタ特定の機械システムによって利用される仮想マシンを実行するJVMによって解釈しますコードが実行されることにより、効率を向上させることができます。

  Java言語解釈バイトコードファイルの責任は、Java仮想マシン、両方のJVM(Java仮想マシン)です。(JVM仮想マシンは、Javaバイトコードファイルを実行しています)

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

  JVM 将内存区域划分为 Method Area(Non-Heap)(方法区) ,Heap(堆) , Program Counter Register(程序计数器) ,   VM Stack(虚拟机栈,也有翻译成JAVA 方法栈的),Native Method Stack  ( 本地方法栈 ),其中Method Area 和  Heap 是线程共享的  ,VM Stack,Native Method Stack  和Program Counter Register  是非线程共享的。

 JVM 内存中线程是否共享示意图:

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

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

 ⑥  虚拟机找到标准类库中的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()

おすすめ

転載: www.cnblogs.com/JMrLi/p/11139498.html