Java 中的變數和常數儲存值,而方法包含一組執行某些操作的運算子。也就是說,Java 中的方法決定物件的行為並對某些變數執行操作。他們可以執行操作,並產生一定的結果。
Java 中的方法是什麼?
方法定義物件的行為,並且是允許您在程式中執行某些操作的命令序列。在其他程式語言中,方法通常被稱為“函數”,這是正確的。事實上,方法就是數學意義上的函數。通常會向方法的輸入提供一些東西(一些變數),這些變數由一系列命令處理,然後方法產生結果。您很可能已經遇到過方法,至少是public static void main(String[] args)。此方法通常啟動 Java 程式的執行。Java中如何宣告方法?
Java 中的所有方法都是在類別內部建立的。它們聲明如下:accessSpecifier ReturnType name (parameter list) {
//method body
}
例如:
public int addTwoNumbers (int a, int b){
//method body
return…
}
其中public是存取說明符,int是方法傳回的變數型,addTwoNumbers是方法的名稱,a和b是方法的參數。讓我們更詳細地看一下。 存取說明符用於定義方法的存取類型。它們可以如下:
-
public:任何類別都可以存取該方法。
-
private:在定義它的類別中可以存取。
-
protected:存取僅在套件內或另一個套件中的其他子類別中可用。
-
default:可以從聲明它的套件中進行存取。在這種情況下,不寫“默認”一詞。
public void printSomething (String myString) {}
方法名稱是您的方法的唯一名稱。我們將在本文稍後解釋一些 Java 命名規則。在上面的方法中,名稱是addTwoNumbers和printSomething。 參數清單是方法採用的參數清單(資料型別和變數名稱)。在上面的第一個範例中,「int a, int b」是參數,在第二個範例中,String myString是參數。如果您不想在方法中使用任何參數,您也可以將此欄位留空。
方法參數範例
public void printSomething (String myParameter1, int myParameter2) {}
這裡有兩個變數myParameter1和myParameter2。它們是方法參數。是方法將執行的用大括號括起來的指令集。如果方法的回傳類型不是void,則return關鍵字必須出現在方法體中。return後面跟著方法傳回的參數。因此,要建立方法,您需要在括號中指定其名稱,並在括號中指定該方法將操作的變數(如有必要)。方法名稱之前是存取說明符和該方法傳回的變數的類型,如果方法不傳回任何內容,則為 void。在大括號中,我們編寫實際的方法,這是最常與方法的參數一起使用的指令序列。下面是一個方法的範例,該方法會尋找數組中的最大數字並傳回它。
public int findBiggest(int[] numbers) {
int max;
max = numbers[0];
for (int i = 1; i < numbers.length; i++) {
if (max < numbers[i]) {
max = numbers[i];
}
}
return max;
}
如何命名方法?
命名方法沒有嚴格的規則,但如果您打算用 Java 進行專業開發,則應該遵循一些準則。方法名稱通常是動詞,以混合大小寫形式編寫,以小寫字母開頭,但隨後的每個單字使用大寫字母(駝峰式命名法)。這裡有些例子:int addTwoNumbers (int a, int b)
void run()
如何呼叫方法
要呼叫一個方法,只需寫下它的名稱並設定相應的變數(如果它們在聲明中)就足夠了。我們在main方法中呼叫findBiggest方法:public static void main(String[] args) {
int[] array = new int[] {5, 7, -2, 6, 7, 1};
int max = findBiggest(array);
System.out.println("the biggest number in array is: " + max);
}
該程式的輸出是:
數組中最大的數字是:7
Java 中不同類型的方法
在Java中,一切都是由物件組成的,物件的行為是由方法定義的。按照慣例,我們可以說Java有預先定義的方法和使用者定義的方法。預定義方法是包含在屬於 Java 語言本身的類別中的方法。預定義方法
Java 中內建了預定義或標準函式庫方法。當然,每個程式設計師都可以在自己的程式中使用它們,甚至可以在本地修改它們。Java 類別庫位於具有 Java 虛擬機器 (JVM) 和 Java 執行時期環境的 Java 歸檔檔案(例如 *jar)中。例如,這些可以是Math類別的方法,例如min()、max()或abs()。或像concat()這樣的字串操作方法。讓我們建立一個帶有main方法的類別並呼叫幾個標準庫方法。import static java.lang.Math.max;
public class Test {
public static void main(String[] args) {
int a = 5;
int b = 7;
int max = max(a,b);
System.out.println(max);
String str1 = "I am ";
String str2 = "here ";
String str3 = str1.concat(str2);
System.out.println(str3);
}
}
請注意,為了使用Math類別的方法,必須在程式開頭導入它。如果沒有這樣做,您可以在方法名稱之前寫上類別名稱,並用點分隔:
int max = Math.max(a,b);
使用者定義的方法
這些方法是程式設計師根據其專案的要求創建的。實際上,我們上面已經創建了使用者定義的findBiggest()方法。為了進行鞏固,讓我們創建另一個方法,它不返回任何內容,也沒有參數,但會響應輸入的名稱並打招呼(即輸出到控制台)。import java.util.Scanner;
public class Test {
public void repeater() {
Scanner scanner = new Scanner(System.in);
System.out.println("WHat should I repeat after you?...");
String s = scanner.nextLine();
System.out.println(s);
}
}
在 Java 中建立靜態方法
一般來說,Java中的方法是物件的方法。要呼叫方法,您需要建立定義該方法的類別的實例。然而,也有靜態方法。它們與常規的不同之處在於它們附加到類,而不是物件。靜態方法的一個重要屬性是它只能存取靜態變數/方法。它們是使用static關鍵字定義的。因此,在Math類別中,所有處理變數的方法都是靜態的。我們可以建立類似Math類別的東西,並在其中收集幾個靜態方法,這些方法可以在不建立包含類別的實例的情況下使用。我們稱之為Numbers。import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;
public class Numbers {
public static int findMax(int left, int right) {
return (left < right) ? right : left;
}
public static boolean isNegative(int number) {
return number < 0;
}
public static long power(long number, int deg) {
if (deg == 0) {
number = 1;
return number;
} else {
number = power(number, deg - 1) * number;
return number;
}
}
public static long abs(long number) {
return number > 0 ? number : -number;
}
public static void main(String[] args) {
int a = 5;
int b = 7;
long c = -7;
long abs = abs(c);
System.out.println(abs);
System.out.println(findMax(a,b));
}
}
程式的輸出在這裡:
7 7
首先,呼叫一個方法來找出數字的絕對值,然後呼叫一個方法來找出兩個數字中較大的一個。您不需要建立Numbers類別的實例來呼叫這些方法,因為這兩個方法都定義為靜態的。
在 Java 程式碼中應用實例方法
可以在定義該方法的類別的實例上呼叫實例方法或常規方法。public class Cat implements Voice{
String name;
String breed;
int year;
public void talk() {
System.out.println("meow meow");
}
}
要呼叫talk()方法,您需要建立Cat類別的實例:
public class Demo {
public static void main(String[] args) {
Cat cat = new Cat ();
cat.talk();
}
}
該程式的輸出在這裡:
喵喵
Java 中的抽象方法
Java 中的抽象方法是沒有實作的方法。也就是說,它們在聲明時不包含程式碼。它們只能在抽象類別中聲明並在其非抽象後代中實現。讓我們使用一個抽象方法myMethodAdd()來建立一個抽象類別。abstract class DemoAbs {
abstract void myMethodAdd();
}
現在讓我們建立這個抽象類別的子類別DemoAbs。這裡我們必須實作myMethodAdd()方法。
public class myClass extends DemoAbs {
void myMethodAdd() {
System.out.println("hello");
}
public static void main(String[] args) {
DemoAbs demoAbs = new myClass();
demoAbs.myMethodAdd();
}
}