學習一種新的編程語言總是一種挑戰(zhàn),因為簡單的失誤就可以產(chǎn)生錯誤,對于門外漢來說都是神秘和充滿困惑的。如果你不是足夠幸運有一個有經(jīng)驗的程序員在旁邊看著你并提供指導,排除你代碼的故障將是非常令人沮喪的。
如果你正學習Java語言,你在編譯和執(zhí)行代碼的時候遇到問題,一般來說問題將分為2類:無論你遇到的是編譯時錯誤,這說明你的程序編譯失敗,還是你遇到運行時錯誤,這是指錯誤發(fā)生在你成功地編譯了程序但不能運行并且沒有產(chǎn)生錯誤。當然,在你遇到一個運行時錯誤之前,你的代碼必須首先能夠編譯,所以在這里我們將研究最常見的開發(fā)者可能遇到的編譯時錯誤的原因。
最常見的編譯時錯誤
我們將使用下面的代碼作為一個Java示例類作為討論:
public class Game {
public static void main(String args[]) {
System.out.println(“If I choose Paper,”);
System.out.println(“And you choose Scissors,”);
System.out.println(“Then I win, and you lose!”);
}
}
Java文件錯誤的命名方式--Java文件的名稱必須和代碼中相關(guān)的公共類完全匹配。因此,如果你的代碼包含一個公共類“Game”,Java文件必須命名為“Game.Java”,而不能命名為“game.Java”,或者是“GAME.Java”,再或者是“MyGame.Java”.該文件的名稱和公共類的名稱在拼寫和大小寫上都必須完全匹配。
代碼錯誤的大小寫--Java對大小寫敏感,因此“public”與“Public”或“puBliC”都是不相同的。Java新手往往利用首字母大寫,反之亦然,由于大小寫錯誤導致他們編寫的代碼編譯失敗。為了進一步復雜化這個問題,編譯時錯誤信息由于大寫問題往往是隱蔽和沒有幫助的。例如,如果你把主方法中的聲明“public static and void”第一個字母大寫,你會得到以下錯誤消息,說需要一個分號,這真的不是問題的根本:
C:\_jdk1.7\bin>Javac Game.Java
Game.Java:3: error: ';' expected
Public Static Void main (String args[]) {
1 error
錯誤匹配的括號--你可以看到你的代碼中的每一個開著的括弧,它可能是一個方括號,大括弧或圓括號,你需要一個與之匹配的關(guān)閉的括弧。有時,一個程序員會忘記關(guān)閉方法的括弧,或者他們會記得關(guān)閉一個方法的括弧,但是忘記關(guān)閉類的括弧。不管它是如何發(fā)生的,如果括號不匹配,你將會一直得到一個編譯時錯誤。
例如,一個Java類的最后一個大括弧不關(guān)閉,試圖編譯代碼將產(chǎn)生下列編譯時錯誤:
C:\_jdk1.7\bin>Javac Game.Java
Game.Java:11: error: reached end of file while parsing
}
1 error
就我個人而言,每當我創(chuàng)建一個新的方法或類時,在敲入開始的括弧之后,我總是敲一些回車,然后添加一個結(jié)束的封閉括號。我只有在括號匹配的情況下我才會開始類主體或方法的代碼編碼。這樣,你的括號會總是匹配狀態(tài),你樣就可以在編寫類或者方法代碼時,不用擔心將來的某個時刻需要關(guān)閉括號。
漏掉分號--人們越來越熟悉的Java另一個常見編碼錯誤是漏掉需要的分號。作為一項規(guī)則,每一個語句必須以分號結(jié)束。不幸的是,這個規(guī)則有時可能會像它的作用一樣另人費解,尤其是當你有一個很難弄清楚它到底是不是一個語句的時候。
例如,在一個方法的主體里面,所有的“system.out.print”調(diào)用都以分號結(jié)束。如果我們在一個方法體中忘記給“system.out”加上分號,我們將會得到一個編譯時錯誤消息,就像下面一樣:
C:\_jdk1.7\bin>Javac Game.Java
Game.Java:7: error: ';' expected
System.out.println(“Then I win and you lose!”)
1 error
容易混淆的部分是由于在Java中并不是每一行你寫的代碼就是一個語句。例如,類聲明是不被視為一個語句,所以它不跟分號。同樣,一個方法聲明是不被視為一個語句的,所以它也不跟分號。要想容易識別哪個是一個語句哪個不是一個語句需要一定的練習,這也需要一定的時間,但請放心,如果你確實有一個語句,它就必須跟著一個分號,否則編譯器會開始報錯。
隨著時間的推移,任何編程語言的細微差別最終都會成為司空見慣的事,而Java眾所周知的請求和市場上其他編程語言沒什么區(qū)別。如果你是Java新手,記住這四個小提示,如果你碰到一個編譯時錯誤,看看是不是Java文件的命名方式產(chǎn)生的問題,代碼中單詞和字母的大小寫情況,不匹配的括號和或漏掉分號。保持這四個問題點在你的腦海里將幫助你解決Java代碼故障排除問題,并希望減輕一些學習Java程序語言的挫折。