當前位置:才華齋>計算機>java語言>

Java語言中的常見錯誤

java語言 閱讀(1.58W)

導語:Java語言雖然功能強大,使用方便、靈活,但是要學好、用好Java語言並不容易。下面就由小編為大家介紹一下Java語言中的常見錯誤,歡迎大家閱讀!

Java語言中的常見錯誤

  1編譯錯誤

它是指在編寫程式時,輸入錯誤的關鍵字或者識別符號、遺漏標點符號及賦值時資料型別不匹配等錯誤。

大小寫字母混淆:Java語言是嚴格區分大小寫的計算機程式語言。類、方法、變數的名稱必須前後完全一致,否則將出現無法解析符號的錯誤。

使用末宣告的變數:在有些高階語言中,變數不需要宣告,就可以直接使用。而Java語言規定在使用任何變數前必須先宣告該變數的型別。如果使用末宣告的變數,編譯程式時會出現無法解析符號的錯誤。(cannot resolve symbol)

使用末初始化的變數:雖然聲明瞭變數,但是在末賦初值前就進行計算或者列印輸出等非賦值操作。這種情況下,會顯示變數可能末被初始化的錯誤提示資訊(might mot have been initialized)。

語句後面遺漏分號:Java語言規定每條語句的末尾必須有分號,也就是說分號是兩條語句之間的分隔點。如果某條語句的分號沒有輸入,則程式編譯時就會出現錯誤。在一般情況下,錯誤提示會正確指出程式中缺少分號的位置。但是如果語句比較複雜,錯誤提示指出的位置可能並不是實際缺少分號的位置,程式設計者必須仔細檢視程式,自行找出錯誤的位置。

資料型別與變數型別不符:當資料型別與變數型別不符時,如果Java語言可以自行轉換的話,則不會給出錯誤資訊,但是執行結果將很可能與程式設計者意願不符。如果Java語言不可以自行轉換的話,則會顯示錯誤。

小括號不配對:小括號左右個數不等的現象經常出現在if 語句和while語句的條件表示式中。當表示式結構複雜,必須使用多層小括號時,很容易出現這類錯誤。因此,建議程式設計者養成先輸入一對小括號,然後再在其中輸入內容的好習慣。

  2執行錯誤

它是指在Java程式執行時因非法操作或者操作失敗等產生的錯誤。這些錯誤在編譯時一般是無法發現的',產生執行錯誤時,程式會被中斷,並顯示錯誤資訊。下面列出常見的執行錯誤。

陣列下標越界是初學者常犯的一個錯誤。Java語言規定陣列的下標由0開始到陣列元素個數減1為止。(yIndexOutOfBounds Exception)

除數為零:Java語言不允許計算過程中出現除數為零的情況,因此,在編寫程式時,一定要注意計算過程中的中間值。如果出現除數為零的情況,則程式會被中斷並顯示除數為0的錯誤資訊。(ArithmeticException:/by zero)

執行錯誤通常比較隱蔽,而且會造成程式中斷甚至系統宕機等現象。為此Java語言提供處理這類錯誤的方法,幫助程式設計者避免程式中斷等現象的發生。

  3邏輯錯誤

程式執行後,沒有得到預期的結果,這說明程式存在邏輯錯誤。這類錯誤從語法上來說是有效的,只是程式邏輯上存在缺陷。例如,使用的變數型別不正確、語句次序錯誤、迴圈變數的初值和終值不正確等。通常,邏輯錯誤不會產生錯誤提示資訊,所以錯誤較難排除,需要程式設計者仔細地分析整個程式的執行步驟。

超出資料型別的數值範圍:在Java語言中,每種資料型別都有其數值範圍,一旦資料超出了資料型別的取值範圍,就會造成計算結果的錯誤。

將等於關係符號寫成“=”,在許多高階語言和資料表示式中,用“=”符號來表示相等的關係,而在Java語言中,該符號是賦值運算子號,“==”才是關係運算符號。在一般情況下,只要比較的資料型別不是boolean型別,Java語言可以在編譯程式的時候發現該錯誤,但是如果進行比較的兩個資料通訊的型別本身就是boolean型別,Java語言可以在編譯程式的時候發現該錯誤,但是如果進行比較的兩個資料的型別本身就是boolean型別,則很難發現該錯誤,最終造成程式出現邏輯錯誤。

例如:

Boolean boo=false;

if(boo=true)tln(“yes”);

在上面的if語句中表達式,Java語言編譯系統將boo=true作為賦值表示式進行處理,也就是說先將true賦值給變數boo,然後再判斷boo的值是否為true,如果為true,則執行列印語句,否則繼續執行下面的語句。很顯然,無論變數boo之前的值是什麼,該表示式的值永遠是true,所以列印語句一定會被執行。

這種錯誤在編譯時是檢查不出來的,但執行結果往往是錯的。而且由於習慣的影響,程式設計者自己也很難發現。

語句體忘記加大括號:大括號在Java程式中具有非常重要的位置,當語句體的語句不止一條時,必須使用大括號,否則很容易出現錯誤。例如:下面的語句本意是要計算1+2+3+…+100的和,但是因為忘記了使用大括號將語句體括起來,所以實際上只是重複執行了sum=sum+i;語句而且進入了死迴圈狀態。

int sum=0,i=1;

while(i<=100)

sum=sum+I;

i++;

為了避免這類錯誤的發生,最好在任何情況下都使用大括號將語句體括起來。