我们上文书说到,我们首先安装Java,然后设置Java环境,然后编译运行了一个简单的Java程序,在命令行模式下显示了一个“Hello baby”。那么,为什么呢?发生了什么呢?

    首先,下载安装Java就不用问为什么了对吧?所谓巧妇难为无米之炊,没有Java却想用,这不可能的。

    其次,为什么我们要那样设置Java的运行环境呢? 因为,目前为止,我只是想在命令行下编译运行java程序,这样一来,你就需要让命令行模式识别java的命令。而命令行下能自动识别的命令,必须我们手动的把命令的路径添加进去。也许你会说,也不是啊,比如cd啊, dir啊这些简单的命令行命令,我们也没有手动添加过啊,是啊,那是系统自动添加的。现在你要用你自己的命令,那你就要自己添加了。

    也许,你会问,你说在目前为止,用命令行,什么意思?难道以后可以不用?是的,如果你想编译运行java程序,你确实必须安装java,但是不一定非要设置java的运行环境,java的运行环境,与其说是java的运行环境,还不如说是为了能在命令行下运行java而不得不进行的设置。如果你想编译运行java程序,安装完java以后,其实你可以使用其他的编译工具进行编写运行java程序,比如,著名的eclipse,这我们以后会讲到。

    好了,我想你应该明白为什么我们要安装java了,也明白我们为什么要设置环境了。但是其实还不见得特别明白,接下来,我们解释一下在命令行下编译运行java程序的方法:

先看javac Test.java,这是干什么呢?这是编译名为Test.java的文件,也就是我们编写的java程序源文件。javac是命令,意思是“编译java程序”的意思。Test.java, 这是命令作用的对象。就是说,编译名为Test.java的java源文件。当你写的程序代码没有语法错误(但也许有逻辑错误)的时候,将会通过编译,通过编译以后会怎么样呢?如果仅从命令行的显示来看,似乎什么也没发生。但是实际上,如果你回到源文件所在的位置去看一下,你会发现,那里多了一个与源文件同名,但是后缀名为class的文件,拿我们的例子来说,就是Test.class,这个东西是什么呢? 这就是你编译通过的结果,当你编译通过,java就会自动生成一个与源文件同名,但后缀名为class的文件。有了这个文件,我们才可能运行java程序。怎么运行呢?

    然后我们看java Test,这是干什么呢?这就是运行java程序,java是运行java程序的命令,Test是程序名称。为什么不是Test.java呢?因为java没有运行Test.java, java运行的其实是Test.class那个文件,但是,不写后缀名。如果不信的话,当你编译通过,并生成了class文件以后,你完全可以把源文件删除,然后使用 java 文件名 的格式来运行程序,完全可以的。在我们的例子中,就是,在编译通过并且生成了Test.class文件以后,删除D盘的Test.java,然后在命令行下,D盘根目录下,打入java Test,就可以运行了。

    那么class文件是个什么文件呢?它是java可以直接读取并直接执行的文件,你非要用记事本打开的话也行,里面是乱码,为什么呢?因为那根本就是给java读的,不是给你读的,你看不懂正常,而且你那记事本打开的,应该也不是其本来面目。

    但是,我们一般是不删除源文件的,为什么不删除呢?你删它干啥啊?你不看你的代码了啊?你不看你老师还看呢,要不你哪儿来分啊?你不看你客户还看呢。而且万一你想改程序呢?你能直接改class文件吗?不能。所以。。。依我这个初学者的愚见,您还是留着源文件吧。

    好了,那么现在我们总结一下java在命令行下是如何运行程序的,首先,前提是你安装了java,并且设置好了java的运行环境,然后,你有一个java的源程序。这样,使用如下的格式使用命令: 命令名 命令作用对象。使用javac来编译文件,然后使用java来运行程序。