天天看點

編譯時Java最常見的錯誤

   如果你正學習java語言,你在編譯和執行代碼的時候遇到問題,一般來說問題将分為2類:無論你遇到的是編譯時錯誤,這說明你的程式編譯失敗,還是你遇 到運作時錯誤,這是指錯誤發生在你成功地編譯了程式但不能運作并且沒有産生錯誤。當然,在你遇到一個運作時錯誤之前,你的代碼必須首先能夠編譯,是以在這 裡我們将研究最常見的開發者可能遇到的編譯時錯誤的原因。

  最常見的編譯時錯誤

  我們将使用下面的代碼作為一個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檔案的名稱必須和代碼中相關的公共類完全比對。是以,如果你的代碼包含一個公共類“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

   錯誤比對的括号--你可以看到你的代碼中的每一個開着的括弧,它可能是一個方括号,大括弧或圓括号,你需要一個與之比對的關閉的括弧。有時,一個程式員 會忘記關閉方法的括弧,或者他們會記得關閉一個方法的括弧,但是忘記關閉類的括弧。不管它是如何發生的,如果括号不比對,你将會一直得到一個編譯時錯誤。

  例如,一個java類的最後一個大括弧不關閉,試圖編譯代碼将産生下列編譯時錯誤:

  c:\_jdk1.7\bin>javac game.java

  game.java:11: error: reached end of file while parsing

  }

  1 error

   就我個人而言,每當我建立一個新的方法或類時,在敲入開始的括弧之後,我總是敲一些回車,然後添加一個結束的封閉括号。我隻有在括号比對的情況下我才會 開始類主體或方法的代碼編碼。這樣,你的括号會總是比對狀态,你樣就可以在編寫類或者方法代碼時,不用擔心将來的某個時刻需要關閉括号。

  漏掉分号--人們越來越熟悉的java另一個常見編碼錯誤是漏掉需要的分号。作為一項規則,每一個語句必須以分号結束。不幸的是,這個規則有時可能會像它的作用一樣另人費解,尤其是當你有一個很難弄清楚它到底是不是一個語句的時候。

  例如,在一個方法的主體裡面,所有的“system.out.print”調用都以分号結束。如果我們在一個方法體中忘記給“system.out”加上分号,我們将會得到一個編譯時錯誤消息,就像下面一樣:

    game.java:7: error: ';' expected

    system.out.println(“then i win and you lose!”)

   容易混淆的部分是由于在java中并不是每一行你寫的代碼就是一個語句。例如,類聲明是不被視為一個語句,是以它不跟分号。同樣,一個方法聲明是不被視 為一個語句的,是以它也不跟分号。要想容易識别哪個是一個語句哪個不是一個語句需要一定的練習,這也需要一定的時間,但請放心,如果你确實有一個語句,它 就必須跟着一個分号,否則編譯器會開始報錯。

  随着時間的推移,任何程式設計語言的細微差别最終都會成為司空見慣的事,而java衆所周知的 請求和市場上其他程式設計語言沒什麼差別。如果你是java新手,記住這四個小提示,如果你碰到一個編譯時錯誤,看看是不是java檔案的命名方式産生的問 題,代碼中單詞和字母的大小寫情況,不比對的括号和或漏掉分号。保持這四個問題點在你的腦海裡将幫助你解決java代碼故障排除問題,并希望減輕一些學習 java程式語言的挫折。

====================================分割線================================

最新内容請見作者的github頁:http://qaseven.github.io/