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 mainString args //主方法,程序從這裡開始執行
System.out.println″Hellothis is a simply test ″ //輸出字符串,字符串用引號括起來
//程序結束
怎麼編譯、運行一個程序呢?上一期我們介紹了JDK,現在我們裝好JDK後,先將上面的代碼保存到一個文本文件HelloworldApp.java。
然後在當前目錄下運行javac HelloworldApp.java
可能你需要等待幾秒鐘才能編譯完成。現在看看,目錄下是不是多了一個HelloworldApp.class?
OK,再運行java HelloworldApp,現在你會看到程序的輸出結果:Hellothis is a simply test !
提示:如果出現“Exception in thread ″main″ java.lang.NoClassDefFoundErrorHelloWorldApp ”錯誤,那麼,需要設置你的Classpath的路徑(你應該先設置好環境變量),在Helloworldapp.class的當前目錄下運行“set classpath=.”命令來設置classpath為當前目錄。然後運行java test就不會出錯了或者請參考前一期的環境配置一節 。
現在,程序運行起來了 那我現在告訴你,以“//”開始的部分為Java程序的注釋,每一個語句以分號結束……
例二:編寫一個簡單的窗口程序
也許,你對這種只能在控制台下運行的程序不太感興趣吧!那好,下面我們看一個能在Windows下運行的Hello World程序。
/文件名:test.java/
/
The first program.
@author warton
@version 1.0 2004-01-01
/
import javax.swing.JOptionPane //需要調用JOptionPane類
public class test //定義類名
public static void mainString args //開始main 方法
//顯示一個消息框
JOptionPane.showMessageDialognull ″Hello this is a basic Java program ″
System.exit0 // 程序結束
//結束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,用於從命令行向應用程序傳送參數。我們可以用args0args1...argsn來訪問這些參數。比如用System.out.printlnargs0 來輸出第一個命令行參數,這一點和C語言很類似。
import javax.swing.JOptionPane引入了Java的界面設計包Swing中的JOptionPane類。JOptionPane.showMessageDialog 方法顯示出一個消息框。
System.exit0 則是退出程序。
//之前的部分為代碼注釋,//之間的@開頭的標記就是javadoc標記(這將在後續章節中詳細講解,不過現在可以先運行“javadoc -d doc -author -version test.java”試試,你會看到當前目錄下多了一個DOC文件夾,裡面有Javadoc生成的漂亮的HTML文檔)。
增強理解
相信不少朋友在學校一定學過C/C++語言吧!為了讓你更深入地了解第一個例程,我們先用一個C語言程序來說明。當然你如果沒有C/C++語言基礎的話,可以跳過。
#include ″stdio.h″//引入頭文件
main //C++的main函數,相當於Java的main方法(在Java裡,是類的一個方法,稱為Method)
printf″This is a simply test
″ //輸出字符串
//結束
也許你的編程起步是從C++語言開始的,根本沒接觸過純C語言,那麼很簡單,我們用純C++語言來描述一下這個程序:
#include ″iostream.h″//按C++語言標准應該寫在#include″ iostream″
void mainvoid //c++程序開始執行
cout<<″This is a simply test ″<<endl
現在你是不是對這個程序一目了然了?看看,Java的注釋、語句都跟C++很類似!