1.4 第一个应用程序——HelloWorld
学习过其他程序设计的读者,一定会记得讲解这些语言的第一个程序是一个“HelloWorld”程序。本书也先介绍编写最简单的应用程序——HelloWorld,然后具体讲解如何编译和运行Java应用程序,最后讲解Java的编译和运行命令。由于第一个Java程序涉及的知识点比较多,所以不要对程序深究,在以后的学习中会逐步解决所有的问题。
1.4.1 HelloWorld程序
HelloWorld.java的编写:打开记事本程序,输入以下代码并保存到某一个目录下,这里保存到 “d:\”目录下。然后再保存HelloWorld,保存的文件名为HelloWorld.java。注意文件必须与类别相同,文件的扩展名为java。
1 // 第一个程序HelloWorld 2 class HelloWorld //类名 3 { 4 public static void main(String[] args) //main()函数 5 { 6 System.out.println("Hello World"); //输出"Hello World" 7 } 8 }
注意:在编写HelloWorld应用程序时,要确保在程序中的每个Java文件有且只能有一个public类,这个类的类名必须和文件名的大小写完全一样。其次,在要运行的类中有且只能有一个public static void main(String[] args)方法(main方法就是程序的主方法)。
程序HelloWorld是本书中的第一个应用程序,虽然该程序代码只有寥寥数行,但是由于所有的Java应用程序都具有同样的结构,所以初学者必须花一些时间对它进行深入研究。
· Java对大小写是敏感的。如果出现了大小写的语法错误,程序是无法运行的。例如,如果把程序中的main()方法写成Main()的话,将出现如下错误:
Exception in thread "main" java.lang.NoClassDefFoundError:
· 继续查看这段源代码,在“//”之后存放的是程序注释,方便读者查阅代码,对程序的运行不造成任何影响。
· 关键字“public”即访问修饰符(access modifier),它是用来控制程序其他部分对控制代码部分的访问级别。关键字“class”表明Java程序中的全部内容都包含在类中,类是作为一个加载程序逻辑的容器。
· 关键字“class”之后紧跟着的是类名。Java中定义类名的规则不是很严格,名字必须以字母开头,后面可以跟字母和数字的任意组合,长度基本没有限定,但是不能使用Java的保留字。
· Java的类名应该符合标准的命名规范。该规则为:类名是以大写字母开头的名词。如果名字由多个单词构成,则每个单词的第一个字母都必须大写。
注意:这里提到命名规则中规定开头字母大写,但不是一定要求大写,并不是说小写时程序不可编译或运行,而是跟Java的命名标准不一致。
· 在类名“HelloWorld”之后是对应的一个半花括号“{”,它与最后一行的“}”相对应,作为类声明的开始和结束符号。
读者可以暂且不管关键词static void,后面会做详细讲解,初学者可把它作为像main方法一样的、应用程序必要的一部分。读者将在后面很多程序中看到如下格式的main方法。
1 public class ClassName 2 { 3 public static void main(String[] args) 4 { 5 … 6 } 7 }
源代码的文件名必须与共有类的名字相同,并用“.java”作为扩展名。因此,必须将上面这段代码的文件名写成“HelloWorld.java”。
1.4.2 编译与运行
前面已经编写了HelloWorld的程序,本节讲述如何编译和运行。
1.HelloWorld的编译
用户编写完Java源文件之后,该程序必须经过编译,将Java源代码转化为字节码,才可以运行编译后的文件。
(1)选择“开始”|“运行”命令,弹出“运行”对话框,如图1-11所示。
图1-11 运行界面
(2)在其中输入cmd,单击“确定”按钮,进入DOS系统,如图1-12所示。
图1-12 DOS界面
(3)使用如下命令:
cd D:
进入HelloWorld.java文件保存的目录,这里的存放路径为d:\。
(4)使用javac命令进行编译:
javac HelloWorld.java
2.HelloWorld的运行
编译成功之后,可以在d:\目录下面找到编译成功的文件HelloWorld.class,该文件是字节码文件。然后通过如下方法运行程序。
输入下面的命令:
java HelloWorld
运行结果如图1-13所示。
图1-13 HelloWorld.java的编译运行结果
注意:程序如果使用javac编译顺利通过了,但是使用java运行的时候显示“NoClassDefFoundError”,则可能是遇到了CLASSPATH问题。java命令在一定的范围(CLASSPATH)内搜索要用的class文件,但是未能找到。首先请确认没有输错成java xxx.class;其次,检查CLASSPATH环境变量,如果设置了该变量但没有包含当前目录,也会遇到这个问题,这时可在CLASSPATH环境变量中加入当前目录。
1.4.3 编译和运行命令
JDK主要包括Java开发工具,主要是以命令行方式执行的程序。其主要Java命令如表1.1所示。
表1.1 Java常用命令
这里主要介绍Java程序编译和运行相关的javac和java命令的使用。Java程序的编译程序是javac.exe。javac命令将Java程序编译成字节码,然后再使用Java解释器(java命令)来解释执行字节码。Java程序源码必须存放在后缀为.java的文件里。对于Java程序里的每一个类,javac都将生成与类相同名称但后缀为.class的文件。编译器把.class文件放在.java文件的同一个目录里(除非用了-d选项)。
当引用到某个自己定义的类时,必须指明它们的存放目录,这就需要利用环境变量参数CLASSPATH。环境变量CLASSPATH由被分号隔开的路径名组成,如果传递给javac编译器的源文件里引用到的类在自定义的本文件和以参数传递的其他文件中找不到,则编译器会按CLASSPATH定义的路径来搜索。
例如对CLASSPATH做一下配置:CLASSPATH=.;C:\javaclasses,则程序在编译时,编译器先搜索当前目录,如果没搜索到,则继续搜索C:\javaclasses目录。注意:系统总是将系统类的目录默认地加在CLASSPATH后面(除非用-classpath选项来编译)。
注意:javac_g是一个用于调试的未优化的编译器,功能与用法和javac一样。
javac的用法如下:
用法:javac <选项> <源文件>
其中,可能的选项如表1.2所示。
表1.2 javac的选项
java用法如下:
java [-选项] 类 [参数...] (执行一个类) 或者java [-选项] -jar jar文件 [参数...] (执行一个jar文件)
其中,可能的选项如表1.3所示。
表1.3 java的选项