如何在 Java 中使用方法
Java 中的方法(在許多其他編程語言中稱為“函數(shù)”)是被組合在一起并標記為可重用的一塊代碼。方法很有用,因為它們允許你在不重寫相同代碼的情況下,執(zhí)行相同的操作或一系列操作,這不僅意味著你的工作量減少,還意味著出現(xiàn)問題時需要維護和調(diào)試的代碼減少。
方法存在于類中,因此標準 Java 樣板代碼適用:
在這樣一個簡單的單文件應用程序中,包定義并不是絕對必要的,但它是一個很好的習慣,而且大多數(shù) IDE 都強制執(zhí)行它。
默認情況下,Java 會尋找在類中運行的 ??main?
? 方法。方法可以是公有的或私有的,也可以是靜態(tài)的或非靜態(tài)的,但 ??main?
? 方法必須是公有的、靜態(tài)的,Java 編譯器才能識別和使用它。當方法是公有的時,它可以從類外部執(zhí)行。要在程序啟動時調(diào)用 ??Example?
? 類,其 ??main?
? 方法必須是可訪問的,因此將其設置為 ??public?
?。
下面是兩個方法的簡單演示:一個 ??main?
? 方法在調(diào)用 ??Example?
? 類時默認執(zhí)行,另一個 ??report?
? 方法接受 ??main?
? 的輸入并執(zhí)行簡單操作。
為了模擬任意數(shù)據(jù)輸入,我使用了 ??if?
?-??then?
? 語句,該語句根據(jù)你啟動應用程序的時間在兩個字符串之間進行選擇。換句話說,??main?
? 方法首先設置一些數(shù)據(jù)(在現(xiàn)實生活中,這些數(shù)據(jù)可以來自用戶輸入,也可以來自應用程序其他地方的其他方法),然后 “調(diào)用” ??report?
?方法,將處理后的數(shù)據(jù)作為輸入提供:
運行代碼:
請注意,同一 ??report?
? 方法有兩個不同的結(jié)果。當然,在這個簡單的演示中,不需要第二種方法。模擬數(shù)據(jù)生成的 ??if?
?-??then?
? 語句可能生成了相同的結(jié)果。但是,當一個方法執(zhí)行一項復雜的任務時,比如將圖像調(diào)整為縮略圖,然后使用調(diào)整后的圖像在屏幕上生成小部件,那么附加組件的“費用”就很有意義了。
何時使用 Java 方法
很難知道何時使用方法,何時只將數(shù)據(jù)發(fā)送到 ??Java 流?? 或循環(huán)中。如果你面臨這個決定,答案通常是使用一種方法。原因如下:
- 方法開銷少。它們不會給代碼增加處理開銷。
- 方法減少代碼的行數(shù)。
- 方法是特定的。查找名為?
?resizeImage?
? 的方法通常比查找隱藏在從驅(qū)動器加載圖像的函數(shù)中某個循環(huán)中的代碼更容易。 - 方法是可重用的。當你第一次編寫方法時,你可能會認為它只對應用程序中的一個任務有用。然而,隨著應用程序的編寫,你可能會發(fā)現(xiàn)自己正在使用一種你認為“已完成”的方法。
函數(shù)式編程與面向?qū)ο缶幊?/h3>
函數(shù)式編程利用方法作為執(zhí)行任務的主要構(gòu)造。創(chuàng)建一個方法,該方法接受一種數(shù)據(jù),處理該數(shù)據(jù),并輸出新數(shù)據(jù)。將許多方法串在一起,你就擁有了一個動態(tài)且功能強大的應用程序。像 C 和 ??Lua?? 這樣的編程語言就是這種編碼風格的例子。
用代碼完成任務的另一種方式是 Java 使用的面向?qū)ο竽P汀T诿嫦驅(qū)ο缶幊讨?,方法是模板的組成部分。你可以創(chuàng)建對象,而不是將數(shù)據(jù)從一個方法發(fā)送到另一個方法,并可以通過使用它們的方法來更改它們。
從面向?qū)ο蟮慕嵌葋砜?,這是一個簡單的 “僵尸末日” 演示程序。在函數(shù)方法中,我使用一種方法生成數(shù)據(jù),另一種方法使用該數(shù)據(jù)執(zhí)行操作。面向?qū)ο蟮牡葍r物是具有表示工作單元的類。這個示例應用程序向用戶顯示一條當天的消息,宣布這一天會有僵尸派對或是僵尸末日。編寫一個“天”對象,然后查詢該對象以了解其特性是有意義的。作為演示面向?qū)ο髽?gòu)造的不同方面的借口,新的示例應用程序還將統(tǒng)計有多少僵尸出現(xiàn)在派對上(或末日)。
Java 為每個類使用一個文件,因此要創(chuàng)建的第一個文件是 ??Day.Java?
?,它用作 ??Day?
? 對象:
在“類”部分中,創(chuàng)建了兩個域:天象 ??weather?
? 和計數(shù) ??count?
?。??weather?
? 是靜態(tài)的。在一天的過程中(在這種假想的情況下),??weather?
? 不會改變。要么是派對 ??paradise?
?,要么是末日 ??apocalypse?
?,持續(xù)了一整天。然而,僵尸的數(shù)量在一天中會增加。
在“構(gòu)造方法”部分,確定當天的天象。它是作為一個 ??構(gòu)造方法?? 完成的,因為它只在類最初被調(diào)用時發(fā)生一次。
在“方法”部分,??report?
? 方法只返回由構(gòu)造方法確定和設置的天象報告。然而,??counter?
? 方法生成一個隨機數(shù),并將其添加到當前僵尸計數(shù)中。
換句話說,這個類做了三件不同的事情:
- 表示應用程序定義的“天”。
- 設置當天不變的天氣報告。
- 設置一天中不斷增加的僵尸數(shù)量。
要使用這所有,請創(chuàng)建第二個文件:
因為現(xiàn)在有兩個文件,所以使用 Java IDE 運行代碼是最簡單的,但是如果不想使用 IDE,可以創(chuàng)建自己的 ??JAR 文件??。運行代碼以查看結(jié)果:
無論調(diào)用 ??report?
? 方法多少次,??weather?
? 都保持不變,但調(diào)用 ??counter?
? 方法的次數(shù)越多,僵尸的數(shù)量就會增加。
Java 方法
方法(或函數(shù))是編程中的重要組成。在 Java 中,你可以將它們作為函數(shù)式編程的單個類的一部分使用,也可以在面向?qū)ο缶幊痰念愔g使用它們。兩種類型的編程對于解決同一個問題有不同的視角,因此沒有對與錯之分。通過反復嘗試,積累一點經(jīng)驗,你會知道哪一個最適合某個特定的問題。