Java程序的编译和运行
Java程序的编译程序是javac.exe,它是负责解释执行编译后的字节码。
我们只需要明白一个问题,编译是使用javac程序对源Java文件的编译,运行是用Java这个工具程序(在Windows平台是java.exe)来运行一个类(.class文件),但类文件的扩展名可以省略不写。
注:Class文件是Java程序的可执行代码,称为Class文件。Javac将Java文件编译成字节码,也就是Class文件。
Javac的用法如下:
javac -g-O-debug-depend-nowarn-verbose-classpath path-nowrite-d dir
-d directory 指明类层次的根目录。用javac -d DIR yourfile.java编译后可以把生产的.class文件存放在DIR目录里。
-classpath path 定义Javac搜索类的路径。它将覆盖缺省的CLASSPATH环境变量的设置。
对于详细的参数设置,可以用javac -help查看帮助。一般情况下,你只需要简单地使用下面的命令编译和运行Java程序就行了。
编译:javac filename.java
执行:java yourClass
编程演练
先动手写出一个程序,在运行起来时会很有成就感的,所以很多讲编程语言的书都会不失时机地用一个简单的程序来引导读者。这的确是个不错的主意,有了成功的体验,相信接下来的学习就难不倒你了。
我们先看看两个简单的Java程序:
例一:控制台(俗称DOS窗口)里输出Hello World
//filename HelloworldApp.java import java.io.*; //引入Java包 public class HelloworldApp { } //定义类名 public static void main(String[] args) { //主方法,程序从这里开始执行 System.out.println("Hello this is a simply test"); //输出字符串,字符串用引号括起来 } //程序结束
怎么编译、运行一个程序呢?上一期我们介绍了JDK,现在我们装好JDK后,先将上面的代码保存到一个文本文件HelloworldApp.java。
然后在当前目录下运行javac HelloworldApp.java
可能你需要等待几秒钟才能编译完成。现在看看,目录下是不是多了一个HelloworldApp.class
OK,再运行java HelloworldApp,现在你会看到程序的输出结果:Hello??this is a simply test !
提示:如果出现“Exception in thread "main" java.lang.NoClassDefFoundError HelloWorldApp ”错误,那么,需要设置你的Classpath的路径(你应该先设置好环境变量),在Helloworldapp.class的当前目录下运行“set classpath=.”命令来设置classpath为当前目录。然后运行java test就不会出错了。或者请参考前一期的环境配置一节。
现在,程序运行起来了。 那我现在告诉你,以“//”开始的部分为Java程序的注释,每一个语句以分号结束……
例二:编写一个简单的窗口程序
也许,你对这种只能在控制台下运行的程序不太感兴趣吧!那好,下面我们看一个能在Windows下运行的Hello World程序。
//文件名:test.java import javax.swing.JOptionPane; //需要调用JOptionPane类 /** * The first program. */ public class test { //定义类名 public static void main(String[] args) { //开始main方法 //显示一个消息框 JOptionPane.showMessageDialog( null, "Hello. this is a basic Java program."); System.exit(0); // 程序结束 } //结束method } //结束Class
编译并运行程序。
演练代码分析
现在我们来分析一下,上面两个经典的Hello World程序的结构,以便让你举一反三,写出比Hello World更经典的程序。
其中,import为引入Java包,如语句import java.io.引入Java基础IO包,并以分号结束。
IO包package含各种输入输出流操作,就如同C/C++语言中的#include "stdio.h"或#include "iostream"差不多。与C++语言中不同的是Java的程序以一个Class开始public class test定义一个public类型的test类,类的执行从main()方法开始执行,和c/c++语言中的main()函数类似。
public class test定义了一个类,类是公共public类型的,类名为test。要注意的是Java中主类名应该和要保存的Java文件名相同。也就是说,这里定义的类名是test,则文件应该保存成test.java(这样,我们编译就用javac test.java命令??运行这个类就用java test命令)。
Main()方法中有参数String[] args,用于从命令行向应用程序传送参数。我们可以用args[0] args[1] ... args[n] 来访问这些参数。
比如用 System.out.println(args[0]); 来输出第一个命令行参数,这一点和C语言很类似。
import javax.swing.JOptionPane 引入了Java的界面设计包 Swing 中的 JOptionPane 类。 Pane.showMessageDialog() 方法显示出一个消息框。
System.exit(0); 则是退出程序。
/* */之前的部分为代码注释,
/** */之间的@开头的标记就是javadoc标记(这将在后续章节中详细讲解,不过现在可以先运行“javadoc -d doc -author -version test.java”试试,你会看到当前目录下多了一个DOC文件夹,里面有Javadoc生成的漂亮的HTML文档)。
增强理解
相信不少朋友在学校一定学过C/C++语言吧!为了让你更深入地了解第一个例程,我们先用一个C语言程序来说明。当然你如果没有C/C++语言基础的话,可以跳过。
也许你的编程起步是从C++语言开始的,根本没接触过纯C语言,那么很简单,我们用纯C++语言来描述一下这个程序:
#include "iostream.h" //按C++语言标准应该写在#include "iostream" void main { //c++程序开始执行 cout << "This is a simply test."; }