1. Java 中的函數/方法

您已經學習了很多 Java 命令,這意味著您可以編寫一些非常複雜的程序。一個程序10、20、30行代碼不是很大的程序吧?

但是一個 100+ 的程序,現在已經很大了,而且代碼很難看懂。您是否可以做些什麼來以某種方式簡化編寫和閱讀包含大量代碼的程序?

是的,方法(或函數)將幫助我們做到這一點。

什麼是方法?簡單地說,方法就是一組具有唯一名稱的命令。換句話說,我們只是把幾個命令放在一個組中,並給它一個唯一的名字。就是這樣 - 該方法已準備就緒。

例子:

沒有方法 用一個方法
class Solution
{
   public static void main(String[] args)
   {
     System.out.print("Wi-");
     System.out.println("Fi");
     System.out.print("Wi-");
     System.out.println("Fi");

     System.out.print("Wi-");
     System.out.println("Fi");
   }
}
class Solution
{
   public static void main(String[] args)
   {
     printWiFi();
     printWiFi();
     printWiFi();
   }
   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }
}

在左列的程序中,我們將相同的代碼重複了三次——我們故意這樣做是為了說明一個觀點。但是在右邊的程序中,我們將重複的代碼移到了一個單獨的方法中,並給它起了一個唯一的名字—— printWiFi.

而不是重新定位的代碼,我們調用該printWiFi()方法 3 次。

右邊一欄的程序運行時,每執行一次該方法,就會執行printWiFi()該方法內部的所有命令。printWiFi()我們剛剛創建了一個新命令(方法),將幾個命令組合成一個組。

任何代碼都可以拆分成單獨的方法。這樣做是為了簡化事情:想法是擁有許多小方法比一個大方法更好。您很快就會驚訝地發現,您曾經編寫自己的程序而不編寫自己的方法。


2.在Java中聲明一個方法

那麼如何正確編寫方法呢?

public static void name()
{
  method body
}

聲明(創建)方法時需要考慮很多細微差別,但我們將從基礎開始。我們怎樣才能聲明最簡單的方法呢?一個簡單的方法聲明如下所示:

其中name 是方法的唯一名稱,method body代表組成該方法的命令。publicstatic和的含義void將在後面討論。

在我們創建了一個方法之後,我們可以在我們的其他方法中調用它。方法調用如下所示:

name();

我們要調用的方法的唯一名稱在哪裡name,即當我們到達方法調用時,我們要執行其命令的方法。

當程序到達方法調用處時,它會簡單地進入方法,執行它的所有命令,返回到原來的方法,繼續執行。

您現在可能已經猜到了,到目前為止我們學到的大多數命令只是其他程序員為了讓我們的生活更輕鬆而編寫的方法: 、等等。System.out.println()Thread.sleep()

一個方法可以包含對其他方法的調用:

代碼 筆記
class Solution
{
   public static void main(String[] args)
   {
     printWiFi10Times();
   }

   public static void printWiFi10Times()
   {
     for (int i = 0; i < 10; i++)
       printWiFi();
   }

   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }
}




調用printWiFi10Times()方法


聲明printWiFi10Times方法 循環


調用方法10次 聲明方法 在屏幕上顯示文本: printWiFi()


printWiFi

Wi-Fi

3. 關於方法的事實

以下是有關方法的更多事實:

事實 1. 方法始終是類的一部分。

方法只能在類中聲明。一個方法不能在另一個方法中聲明。方法不能在類外聲明。

事實 2. 方法的名稱沒有神聖的含義。

調用什麼方法並不重要——這不會影響任何事情。main 方法與所有其他方法一樣。只是為 Java 機器將開始執行程序的方法選擇了這個名稱。這沒什麼神奇的。

事實 3. 類中方法的順序無關緊要。

您可以按任何順序在類中編寫方法——這不會以任何方式影響程序的執行。例子:

代碼
class Solution
{
   public static void printWiFi10Times()
   {
     for (int i = 0; i < 10; i++)
       printWiFi();
   }
   
   public static void main(String[] args)
   {
     printWiFi10Times();
   }

   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }
}
class Solution
{
   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }

   public static void printWiFi10Times()
   {
     for (int i = 0; i < 10; i++)
       printWiFi();
   }
   public static void main(String[] args)
   {
     printWiFi10Times();
   }
}

事實 4. 一個方法中的變量與其他方法中的變量沒有任何關係。

在維加斯發生的事情,留在維加斯。並且在方法內聲明的變量保留在方法內。

可以在兩個相鄰的方法中聲明同名變量,並且這些變量之間沒有任何關係。


4. 方法名稱

眾所周知,編程中最困難的兩個問題是為方法選擇正確的名稱和為變量選擇正確的名稱。

事實上,關於如何正確命名方法,幾乎出現了一門完整的科學。每種編程語言都有自己的標準。在Java中,習慣上遵循這些原則:

原則 1.方法名應簡要描述該方法的作用。

然後另一個閱讀你的代碼的程序員可以根據方法的名稱來猜測代碼的作用。他或她不需要每次都查看被調用方法的代碼。而且這些方法的目的更容易記住。

回想一下,它用於“讓程序進入睡眠狀態”並用於“讀取下一個整數”。方便吧?Thread.sleep()Scanner.nextInt()

原則2.一個方法名可以是多個單詞。

但是,這樣做有幾個限制:

  • 方法名稱中不能有空格:所有單詞都寫在一起。
  • 每個單詞都大寫,除了第一個。
  • 方法名總是以小寫字母開頭

回憶printWiFi10Times方法。這個名字是什麼意思?“顯示‘WiFi’一詞 10 次”。你不應該在方法的名字中包含很多單詞:名字應該反映它的本質。

這種命名方法的標準稱為 CamelCase(大寫字母就像駱駝的駝峰)。

原則 3. 方法名以動詞開頭。

一個方法總是做一些事情,所以方法名中的第一個詞總是一個動作。

以下是一些錯誤的方法名稱:home, cat, car, train, ...;

一些好的名字是:run, execute, print, read, write, ...

原則 4. 僅使用拉丁字母和數字。

Java 對不同的語言都有很好的支持。您可以用俄語和中文編寫變量、方法和類的名稱——一切都可以!

但!System.out.println()如果方法是用中文寫的,你要學多久Java ?比現在長得多,對吧?這是第一點。

其次,許多軟件開發團隊是國際化的。全世界的程序員都在使用大量的 Java 庫。

因此,建議在方法名稱中僅使用拉丁字母和數字。

重要的:
方法名必須以字母開頭(不能以數字開頭)。