-
1 # 青陽樺榎
-
2 # IT人劉俊明
剛開始學習java通常會遇到不少編譯和執行上的錯誤,嚴格意義上說,這不應該稱作為bug。一般我們把bug稱作“缺陷”,通常指的是程式在處理不可預見的事件時沒有達到預期的設計目標。
在初學java時會遇到很多編譯上的錯誤和執行過程中的錯誤,為什麼會出現這些問題呢?我們看一下java語言的特點和要求,進而來分析這個問題:
java語言是嚴格要求大小寫的語言,也就是說大寫的A和小寫的a是完全兩個不同的字元。這個要求會導致初學者出現大量的關於字元大小寫的錯誤問題,出現這部分錯誤的學員一般是程式設計的初學者,或者是其它不區分大小寫程式語言的程式設計師。
java語言不允許未經定義的賦值,比如要定義一個整形資料並賦值:int number = 99;如果你是個python程式設計師你可能會這樣寫:number = 99;這也是初學java常犯的錯誤。這裡面還有關於成員屬性和區域性屬性的不同,成員屬性可以自動初始化,區域性屬性在使用前則必須手動賦值。
java語言對方法定義的要求是比較嚴格的,比如聲明瞭返回值就一定要有配對兒的return語句,方法過載和方法重寫都有嚴格的格式要求。如果沒有清晰這些概念就會出現編譯錯誤。
java語言對構造器以及繼承的格式要求也是嚴格的,比如已經自定義了一個有參構造器,就不能使用預設構造器了。如果父類中定義了有參構造器,那麼子類的構造器通常要顯式呼叫父類中的構造器。
java語言對異常處理也是有要求的,比如IO操作是一定要做異常處理的,要麼丟擲(throws)要麼捕獲(try-catch)。針對異常的處理方式也有嚴格的格式要求,對初學者來說這也是一個挑戰。
java語言對介面的定義也有一套嚴格的格式要求,比如類實現介面必須實現介面中的所有方法,很多初學者就會忘記實現介面中的某個方法從而導致錯誤。
java語言中對多型的定義有嚴格的要求,比如“三個定義”和“兩個方法”:父類定義子類構建、介面定義類構建、抽象類定義實體類構建,方法過載和方法重寫(也有叫方法覆蓋),這些概念的定義都是有嚴格格式規定的,初學者常常在這些規定的掌握上有不足的地方從而引發錯誤。
在後期學到web開發時,初學者最為常見的錯誤是路徑不對導致的404錯誤,這些經過一段時間的練習都會慢慢避免。所謂的程式設計經驗很大程度上指的就是除錯錯誤的經驗。很多時候我在幫程式設計師除錯程式的時候,經常一眼就看到問題,這不是我有多厲害,是因為這樣的錯誤我已經犯過多次了,所以一下就能發現它,所以說學習程式設計是需要多做練習和實驗的。
回覆列表
對於24k純新而言,我覺得花式NullPointException肯定高票當選。被這個異常教會第一次讀異常資訊並發現那堆亂七八糟的文字原來是能被人看懂的的請右上角。緊接著應該就是各種IOException和ClassCastException,突然發現java也不是為所欲為。而到了後期,各種500和404肯定會伴隨左右(bug嘛,又不僅限於異常),接觸spring以後,BeanCreationException肯定也困擾過不少入門者。從害怕異常到愛上異常,估計也是多數javaer的成長之路吧……