CodeGym /Java Blog /Toto sisi /Java 方法
John Squirrels
等級 41
San Francisco

Java 方法

在 Toto sisi 群組發布
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是方法的名稱,ab是方法的參數。讓我們更詳細地看一下。 存取說明符用於定義方法的存取類型。它們可以如下:
  • public:任何類別都可以存取該方法。

  • private:在定義它的類別中可以存取。

  • protected:存取僅在套件內或另一個套件中的其他子類別中可用。

  • default:可以從聲明它的套件中進行存取。在這種情況下,不寫“默認”一詞。

傳回類型定義此方法傳回的類型。在上面的例子中,int是回傳型別。如果方法不傳回任何內容,則傳回類型為 void:
public void printSomething (String myString) {}
方法名稱是您的方法的唯一名稱。我們將在本文稍後解釋一些 Java 命名規則。在上面的方法中,名稱是addTwoNumbersprintSomething參數清單是方法採用的參數清單(資料型別和變數名稱)。在上面的第一個範例中,「int a, int b」是參數,在第二個範例中,String myString是參數。如果您不想在方法中使用任何參數,您也可以將此欄位留空。

方法參數範例

public void printSomething (String myParameter1, int myParameter2) {}
這裡有兩個變數myParameter1myParameter2。它們是方法參數。是方法將執行的用大括號括起來的指令集。如果方法的回傳類型不是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();
   }
}

方法呼叫的記憶體分配

這是一個相當複雜的話題,需要更仔細的分析。這裡我們只提及最基本的內容,以便對這個主題有一個粗淺的了解。JVM 記憶體由堆疊和堆疊區域組成。堆是儲存 Java 物件的記憶體區域。堆疊記憶體是儲存原始變數和對方法物件的參考的暫存記憶體區域。堆疊記憶體包含取決於方法的短期值。這種類型的記憶體是基於後進先出 (LIFO) 原則。當我們呼叫一個方法時,堆疊記憶體會建立一個新區塊。它包含本地原始值。當我們終止一個方法時,在堆疊記憶體中建立的區塊將變為空閒。

結論

在本文中,我們了解了在 Java 語言中建立方法的基礎知識,以及 Java 中有哪些方法以及如何使用它們。我們了解到方法決定類別的行為。如果沒有方法,物件就不可能相互互動。 為了鞏固您所學到的知識,我們建議您觀看我們的 Java 課程中的影片課程
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION