Java语言的HelloWorld程序详细分析.doc

Java语言的HelloWorld程序详细分析.doc

ID:50827081

大小:186.50 KB

页数:5页

时间:2020-03-15

Java语言的HelloWorld程序详细分析.doc_第1页
Java语言的HelloWorld程序详细分析.doc_第2页
Java语言的HelloWorld程序详细分析.doc_第3页
Java语言的HelloWorld程序详细分析.doc_第4页
Java语言的HelloWorld程序详细分析.doc_第5页
资源描述:

《Java语言的HelloWorld程序详细分析.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Java语言的HelloWorld程序详细分析HelloWorld.javapublicclassHelloWorld{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubSystem.out.println("HelloWorld");}}这是每个Java程序员都知道的。虽然简单,但是从一个简单的问题可以引入更深的思考。在这篇文章中,我们将讨论这个简单的程序。HelloWorld.javapublicclassHelloWorld{

2、/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubSystem.out.println("HelloWorld");}} 1、为什么一切都开始于一个类?Java程序是由类组成,一个类包含方法和属性。这是由于它的面向对象的特征:一切皆对象,每个对象都是一个类的实例。面向对象编程有很多优势,比如更好的模块化,扩展性强等2、为什么总有一个“main”方法?“main”方法是程序的入口,它是静态的。“static”是指该方法是类的一部分,而

3、不是对象的一部分。这是为什么?我们为什么不把一个非静态方法作为程序的入口?如果方法不是静态的,那么需要创建一个对象后才能使用方法。因为必须用对象去调用方法。对于程序的入口,这是不现实的。所以,程序的入口方法是静态的。参数“String[]args”表示一个字符串数组可以被传入到该程序,用来初始化程序。3、HelloWorld的字节码执行这个程序,Java文件首先编译为java字节码储存在.class文件里。字节码是什么样子的呢?首先,字节码本身是无法读取。如果我们用一个十六进制编辑器打开,它看起来像下面这样:我们能看到很多操作码(比如 CA、

4、4C等)在字节码上,它们每个都有一个相应的助记码(比如,aload_0在下面的例子中)。操作码是不可读的,但我们可以用javap命令查看.class文件的助记符形式。“javap-C”打印出每个方法的反汇编代码。反汇编代码的意思是包括Java字节码的说明。javap-classpath.-cHelloWorld Compiledfrom"HelloWorld.java"publicclassHelloWorldextendsjava.lang.Object{publicHelloWorld();Code:0:aload_01:invokesp

5、ecial#1;//Methodjava/lang/Object."":()V4:returnpublicstaticvoidmain(java.lang.String[]);Code:0:getstatic#2;//Fieldjava/lang/System.out:Ljava/io/PrintStream;3:ldc#3;//StringHelloWorld5:invokevirtual#4;//Methodjava/io/PrintStream.println:(Ljava/lang/String;)V8:return} 上

6、面的代码中包含两个方法:一个是默认构造函数,这是由编译器推断出,另一个是main方法。每个方法下面,都有一系列指令,比如aload_0,invokespecial#1,等下面的每个方法,也有说明,如aload_0,invokespecial#1,等指令可以在java指令清单里查到。例如,aload_0指令是加载一个从栈中引用的本地变量0,getstatic指令获取一个类的静态字段值。注意“#2”指令在getstatic指令后指向运行常量池。常量池是一个JVM运行时数据区,查看。我们可以用“javap-verbose”命令来查看常量池。此外,每

7、个指令开始于一个数字,如0,1,4等。在.class文件中,每个方法都有一个对应的字节码数组。这些数字对应的每一个操作码和它的参数都存储在数组中的索引中。每个操作码为1个字节,指令可以有0个或多个参数。这就是为什么数字是不连续的。现在,我们可以用“javap-verbose”查看.class文件进一步研究。javap-classpath.-verboseHelloWorld Compiledfrom"HelloWorld.java"publicclassHelloWorldextendsjava.lang.ObjectSourceFile:"

8、HelloWorld.java"minorversion:0majorversion:50Constantpool:const#1=Method#6.#15;//j

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。