在本教程中,您將借助示例學習Java方法,如何定義方法以及如何在Java程序中使用方法。
在數學中,我們可能已經研究過函數。例如,f(x) = x2x 是一個返回平方值的函數。
If x = 2, then f(2) = 4 If x = 3, f(3) = 9 and so on.
同樣,在計算機編程中,函數是執(zhí)行特定任務的代碼塊。
在面向對象的編程中,該方法是用于函數的術語。方法綁定到類,并且它們定義類的行為。
在學習方法之前,請確保了解Java類和對象。
根據用戶定義的方法還是標準庫中可用的方法,Java中有兩種方法:
標準庫方法
用戶定義的方法
標準庫方法是Java中的內置方法,可以隨時使用。這些標準庫與Java類庫(JCL)一起出現(xiàn)在JVM和JRE的Java歸檔文件(*.jar)中。
例如,
print() - 是java.io.PrintSteam的一個方法。print("…")方法用引號打印字符串。
sqrt() - 是數學課的一種方法。它返回一個數字的平方根。
這是一個工作示例:
public class Main { public static void main(String[] args) { //使用sqrt()方法 System.out.print("4的平方根是: " + Math.sqrt(4)); } }
輸出:
4的平方根是: 2.0
我們還可以創(chuàng)建自己選擇的方法來執(zhí)行某些任務。這種方法稱為用戶定義方法。
這是我們如何用Java創(chuàng)建方法的方法:
public static void myMethod() { System.out.println("我的函數"); }
在這里,我們創(chuàng)建了一個名為myMethod()的方法。我們可以看到,我們在方法名之前使用了public、static和void。
public - 訪問修飾符。這意味著可以從任何地方訪問該方法。要了解更多信息,請訪問Java訪問修飾符
static - 這意味著可以在沒有任何對象的情況下訪問該方法。要了解更多信息,請訪問Java靜態(tài)關鍵字。
void - 這意味著該方法不返回任何值。我們將在本教程的后面部分進一步了解此內容。
這是我們如何創(chuàng)建方法的簡單示例。但是,Java中方法定義的完整語法為:
modifier static returnType nameOfMethod (parameters) { // method body }
這里,
modifier - 它定義訪問方法是公共方法,私有方法等。
static - 如果使用static關鍵字,則無需創(chuàng)建對象即可對其進行訪問。
例如,sqrt()標準Math類的方法是靜態(tài)的。因此,我們可以直接調用Math.sqrt()而無需創(chuàng)建Math類的實例。
returnType - 它指定方法返回的值的類型。例如,如果方法具有int返回類型,則它返回整數值。
一種方法,可以返回原始數據類型(int,float,double等),原生對象(String,Map,List等),或任何其他的內置和用戶定義的對象。
如果該方法未返回值,則其返回類型為void。
nameOfMethod - 它是一個標識符,用于引用程序中的特定方法。
我們可以給方法起任何名字。但是,以它執(zhí)行的任務命名是更常規(guī)的做法。例如calculateArea(),display()等。
parameters (arguments) - 這些是傳遞給方法的值。我們可以將任意數量的參數傳遞給方法。
method body - 它包括用于執(zhí)行某些任務的編程語句。方法主體包含在花括號內{ }。
現(xiàn)在我們知道了如何定義方法,我們需要學習使用它們。為此,我們必須調用該方法。這是如何做
myMethod();
該語句調用myMethod()先前聲明的方法。
在執(zhí)行程序代碼時,它在代碼中遇到myFunction()。
然后執(zhí)行分支到myFunction()方法并在方法體內部執(zhí)行代碼。
在方法體執(zhí)行之后,程序返回到原始狀態(tài),并在方法調用后執(zhí)行下一個語句。
讓我們看看如何在Java程序中使用方法。
class Main { public static void main(String[] args) { System.out.println("即將遇到一種方法。"); //調用方法 myMethod(); System.out.println("方法已成功執(zhí)行!"); } // method definition private static void myMethod(){ System.out.println("從myMethod()內部打印!"); } }
輸出:
即將遇到一種方法。 從myMethod()內部打印! 方法已成功執(zhí)行!
在上述程序中,我們有一個名為myMethod()的方法。該方法不接受任何參數。同樣,該方法的返回類型為void(意味著不返回任何值)。
在這里,方法是static。因此,我們在未創(chuàng)建類的對象的情況下調用了該方法。
再來看一個實例
class Main { public static void main(String[] args) { //創(chuàng)建Output類的對象 Output obj = new Output(); System.out.println("即將遇到一個方法。"); //調用Output類的myMethod() obj.myMethod(); System.out.println("方法已成功執(zhí)行!"); } } class Output { //public:這個方法可以從類外部調用 public void myMethod() { System.out.println("從myMethod()內部打印。"); } }
輸出:
即將遇到一個方法。 從myMethod()內部打印。 方法已成功執(zhí)行!
在上面的示例中,我們創(chuàng)建了一個名為myMethod()的方法。該方法位于名為Output的類中。
由于方法不是static,因此使用obj類的對象調用該方法。
obj.myMethod();
如前所述,Java方法可以具有零個或多個參數。并且,它也可能返回一些值。
讓我們以有返回值的方法為例。
class SquareMain { public static void main(String[] args) { int result; //調用方法并存儲返回值 result = square(); System.out.println("10的平方值是: " + result); } public static int square() { //return 語句 return 10 * 10; } }
輸出:
10的平方值是: 100
在以上程序中,我們創(chuàng)建了一個名為square()的方法。此方法不接受任何參數,并返回值為10 *10。
在這里,我們提到的方法的返回類型為int。因此,該方法應始終返回整數值。
如我們所見,此方法的范圍是有限的,因為它總是返回相同的值?,F(xiàn)在,讓我們修改上面的代碼片段,以使它始終返回傳遞給該方法的任何整數的平方值,而不是始終返回10的平方值。
public class Main { public static void main(String[] args) { int result, n; n = 3; result = square(n); System.out.println("3的平方是: " + result); n = 4; result = square(n); System.out.println("4的平方是: " + result); } // 方法 static int square(int i) { return i * i; } }
輸出:
3的平方是: 9 4的平方是: 16
在此,square()方法接受一個參數i并返回i的平方。返回的值存儲在變量result中。
如果我們傳遞任何其他數據類型,而不是int類型的值,則編譯器將引發(fā)錯誤。這是因為Java是一種強類型語言。
在方法調用期間傳遞給getSquare()方法的參數n稱為實際參數。
result = getSquare(n);
方法定義接受的參數稱為形式參數。形式參數的類型必須顯式類型化。
public static int square(int i) {...}
我們還可以使用逗號將多個參數傳遞給Java方法。例如,
public class Main { //方法定義 public static int getIntegerSum (int i, int j) { return i + j; } // 方法定義 public static int multiplyInteger (int x, int y) { return x * y; } public static void main(String[] args) { //調用方法 System.out.println("10 + 20 = " + getIntegerSum(10, 20)); System.out.println("20 x 40 = " + multiplyInteger(20, 40)); } }
輸出:
10 + 20 = 30 20 x 40 = 800
注意: 實際參數和形式參數的數據類型應匹配,即第一個實際參數的數據類型應與第一個形式參數的數據類型相匹配。同樣,第二個實際參數的類型必須與第二個形式參數的類型相匹配,以此類推。
1.主要優(yōu)點是代碼可重用性。我們可以編寫一次方法,并多次使用它。我們不必每次都重寫整個代碼??梢詫⑵湟暈椤?strong>一次編寫,多次重用”。例如,
public class Main { //方法定義 private static int getSquare(int x){ return x * x; } public static void main(String[] args) { for (int i = 1; i <= 5; i++) { //方法調用 int result = getSquare(i); System.out.println("" + i + " 的平方是: " + result); } } }
輸出:
1 的平方是: 1 2 的平方是: 4 3 的平方是: 9 4 的平方是: 16 5 的平方是: 25
在上面的程序中,我們創(chuàng)建了一個名為getSquare()的方法來計算數字的平方。這里,用同樣的方法計算小于6的數的平方。
因此,我們反復使用相同的方法
方法2使代碼更易讀,更易于調試。例如,getSquare()方法可讀性很強,因此我們可以知道這個方法將計算一個數字的平方。