理解本文所需的知識程度:初學者。您正在學習 Java 語法任務,並且更接近其初始水平。
您剛開始學習 Java。你會被來自聚寶盆的術語轟炸。您加載了大量的技術信息,有時您會對三棵松樹感到困惑。相信我,既然你已經涉足編程,事情就永遠如此(此時,屏幕外響起一聲不祥的笑聲,一個安靜的聲音,中斷了一半的話語,低聲說道:“快跑……先救自己吧)」太晚了...」)。即使您是最好的開發人員,錯誤也會在您的餘下程式設計生涯中困擾您。然而,這根本不像聽起來那麼可怕。
如果您剛開始學習 JavaRush,那麼您很可能已經遇到了本文中提出的問題。無論如何,我們歡迎您提出評論來描述您在學習 Java 的頭幾個月中遇到的問題。 |
0 層級問題:比較運算子 (==) 和賦值運算子 (=) 的混淆。
對於那些從其他程式語言轉向的人來說,這是一個非常常見的問題。一般來說,從小學開始我們就已經習慣了
(=)
這是一個等號。可以用來記住的一個簡單技巧是:如果您知道您只關心其中一個值(將一個值分配給另一個值),請使用單個“ ”符號
=
,否則如果您關心所有變數和值(您將比較它們)你需要一個雙「
==
」符號。
問題:使用比較運算子 (==) 測試字串等效性
要做什麼:請記住,
不能使用 來檢查 Java 物件的等價性(==)
,因為該運算子旨在測試基本類型的相等性。
對於對象,您需要使用
.equals()
.
String
在 Java 語言中,它只不過是一個物件(和)
immutable
。
標記為的物件Immutable 是其狀態在建立後無法變更的物件。在Java中,這表示類別的所有實例欄位都被標記為final 和 是原語(或也immutable )。 |
問題:循環中的字串連接
不要自己嘗試這個!每次連接字串時,都會建立一個新物件
String
(正如我們在上面發現的,字串
immutable
是不可變的)。在某些時候,您將耗盡內存,或者程式將開始花費太多時間來完成。
解決方案。在循環中連接內容時使用
StringBuilder
替代方法。當需要對字串進行大量更改時使用
String
該類別。
StringBuilder
這些線與 不同
String
,不是
immutable
。
問題:空指標異常
null
當我們實際上需要一個真實的物件時 嘗試使用空指標時,就會發生這種異常。
所有原始類型都有預設值。所以, yint 是0 , yboolean 是 false 。任何引用類型(即物件)的預設值為null 。它不是一個物件或類型,而是一個特殊的值。這本質上意味著「這裡什麼都沒有」。 |
怎麼做:如果您的程式碼編寫方式使得您的物件在某些時候可以接受該值
null
,則您需要添加“檢查
null
”,特別是如果您不是自己創建該物件的話。還要記住,返回空集合比返回一組 更好
null
。為 getter 和 setter 添加驗證也很好。
問題:由於某種原因 if / while / for 迴圈不起作用
if (something.equals («что-то еще»)); {
System.out.println («Почему я не работаю???»);
}
這是怎麼回事?很簡單:一個額外的分號已經讓數十萬新手 Java 程式設計師痛不欲生。好吧,之後你就不需要它了
if ()
。從語言的角度來看,這樣的語法是完全可以接受的,因此編譯器不會抱怨它。但它終止了條件語句,區塊內的程式碼
{}
永遠不會滿足上面的條件。
解決方案:記住設計邏輯。「
;
」標誌意味著某個區塊的結束,但這裡一切才剛開始。
問題:嘗試從靜態方法(例如 main)存取非靜態成員變數
解決方案。這個問題涉及到概念本身的理解
static
。如果一個方法標有這個詞,則表示我們不需要實例化該類別來呼叫main方法。因此,解決辦法就是充分理解「靜力學」並理解其本質。
問題:嘗試透過開發現有的函式庫和工具來重新發明輪子
解決方案。其實這並不是什麼大問題。對於初學者來說,這是一個更有用的練習。但是,如果您想專注於結果,例如建立一個方便的訂戶資料庫,那麼在電話簿中搜尋訂戶只是您的應用程式的結果之一。在這種情況下,就不需要編寫二分查找演算法了。使用現有的(我們向您保證,有人在您之前已經編寫了它並且它位於標準庫中)。所以研究一下Oracle文件中的Java標準函式庫。學習 Google,習慣閱讀 Stack Overflow 並提出有關
JavaRush 幫助的問題!……當然,這些都不是初學者的全部問題。在評論中描述一下你的吧!
您有興趣閱讀 Java 相關文章嗎?加入 Java 開發人員小組。
這裡有很多有趣的東西。
GO TO FULL VERSION