Java基礎——函數__區塊鏈

來源:互聯網
上載者:User
Java基礎——函數 一、函數的基本使用

函數的定義

函數是電腦編程中非常重要的部分,是編程中最基本的元素之一。函數表示的是一 種通用的過程,這種過程能夠對外界提供服務。例如,現實生活中,ATM 取款機上有不同 的功能,我們可以理解為 ATM 機上具有不同的函數可以調用;我們在 ATM 機上取錢,就 可以理解為我們在 ATM 機上調用了“取錢”函數。在這種關係中,我們是“取錢”函數 的調用者,“取錢”函數為我們提供服務。

代碼展示如下:

package p4;public class hanshu{public static void main(String [] args){int d=add(3,2);//調用函數System.out.println(d);}public static int add(int a,int b){//聲明public static 傳回值類型 函數名(形參)int c=a+b;//實現return c;//傳回值}}


Ⅰ,定義位置

在類中,任何函數的外部;一個類中可以有多個函數,函數的順序是無關緊要的。

Ⅱ,聲明

public static 傳回值類型 函數名(參數表)

形式參數(形參):相當於函數內部有效局部變數

 最重要的部分就是函數的三要素:傳回值、函數名、參數表。 傳回值

  函數名:表示函數的名字; 

 參數表:表示調用函數時所給的參數是什麼,即調用函數時需要給函數哪些 “輸入”。

 傳回值: 以“取錢”函數為例,函數的傳回值為“錢”,我們作為調用者調用“取錢”函數,目 的就是獲得這個函數的傳回值“錢”;這個函數的參數表表示我們對調用“取錢”時應該給 這個函數傳遞的參數,取錢時需要“銀行卡、密碼、取款金額”等一系列參數。 在 Java 中,函數(Function)也被稱之為方法(Method)。Java 中並不區分這兩個概 念,因此,本書中“函數”和“方法”指的是同一個意思。

return 語句除了能夠傳回值之外,還能夠控制 流程的跳轉。具體的說,在執行 return 語句的時候,被調用的函數會終止執行,並返回到 函數的調用點上

傳回值為void類型,不需要傳回值,將代碼塊中代碼執行完再結束。

Ⅲ,實現

{   }

必須和聲明一致(主要指傳回值類型)

Ⅳ,調用函數

函數名(實際參數(實參));

實參會依次給形參賦值

調用函數,程式流程會進入函數,函數返回,程式流程會返回到函數調用點

①函數的嵌套調用

前面的內容,我們為大家介紹了函數的一些基本使用。接下來,要介紹的是函數中一 些更加靈活的應用。看下面這個代碼的例子:

 
package p4;public class TestNestedCall{/*首先,是在main函數中輸出“main1”,然後,在main函數中調用了ma方法,於是,流程從 main 中跳轉到了ma函數中。在ma函數的第一個語句中,輸出“ma1”。*/public static void main(String args[]){System.out.println("main1");ma();System.out.println("main2");}/*然後,在ma方法中,又調用了mb方法。*/public static void ma(){System.out.println("ma1");mb();System.out.println("ma2");}public static void mb(){System.out.println("mb1");System.out.println("mb2");}/*在ma調用mb函數之後,mb函數輸出“mb1”和“mb2”。然後,mb 函數中所有的代碼都執行完了,mb函數返回其調用點,也就是返回到ma方法中。然後,ma方法繼續執行,輸出“ma2”。然後,ma方法的代碼也都全部完成,於是 ma 方法也返回調用點,也就是返回到主函數中。最後,主函數輸出“main2”,主函數中所有代碼都執行完畢,程式終止。*/}


 


②函數的遞迴調用

函數除了能夠調用其他函數之外,還可以調用函數本身。這就是函數的遞迴調用。

如果需要寫遞迴的話,需要注意一下幾個問題:

1、要首先研究出一個推導公式,這個公式要與參數有關,最好這個公式能夠用(n-1)調 用的結果,來計算調用 n 的結果。例如,上面的 n! = (n-1)! * n 就是一個很好的例子。

2、 要寫出遞迴的收斂條件。例如,上面對 n 是否為 1 的判斷,這部分就是在說明遞迴 什麼時候終止。

 

  二、函數的作用

package p4;public class TestSeperator{public static void main(String args[]){System.out.println("Hello World");//列印分隔字元 --------------------for(int i = 0 ; i < 20 ; i++){System.out.print(“-“);}System.out.println();System.out.println("你好,世界");//列印分隔字元 --------------------for(int i = 0 ; i < 20 ; i++){System.out.print(“-“);}System.out.println();System.out.println("Bonjour tout le monde");//列印分隔字元 --------------------for(int i = 0 ; i < 20 ; i++){System.out.print(“-“);}System.out.println();System.out.println("Hallo Welt");}}



1,避免冗餘代碼

我們來分析一下上面的代碼。由於要輸出三個分隔字元,因此,需要有三個一模一樣的 列印語句。因此,我們可以寫一個函數:printSeperator(),這個函數專門用來列印分隔字元。 修改後的代碼如下:

package p4;public class TestSeperator{public static void main(String args[]){System.out.println("Hello World");printSeperator();System.out.println("你好,世界");printSeperator();System.out.println("Bonjour tout le monde");printSeperator();System.out.println("Hallo Welt");}public static void printSeperator(){for(int i = 0 ; i < 20 ; i++){System.out.print(“-“);}System.out.println();}}


2,提高程式的可維護性

如果現在需求產生了變化, 在輸出分隔字元時,希望能夠輸出一行“+”而不是一行“-”,此時,就必須要修改代碼。 如果不使用函數的話,則必須要改動主函數中所有的輸出分隔字元的語句。在這個具體 的例子中,在主函數中的代碼要修改三處。修改後的程式碼片段如下:

System.out.println("Hello World");//列印分隔字元 +++++++++++++++++++for(int i = 0 ; i < 20 ; i++){System.out.print(“+“);}System.out.println();System.out.println("你好,世界");//列印分隔字元 +++++++++++++++++++for(int i = 0 ; i < 20 ; i++){System.out.print(“+“);}System.out.println();System.out.println("Bonjour tout le monde");//列印分隔字元 +++++++++++++++++++for(int i = 0 ; i < 20 ; i++){System.out.print(“+“);}System.out.println();System.out.println("Hallo Welt");


3,提高程式的重用性

如果使用函數的話,由於在主函數中僅僅是對同一個函數的多次調用, 因此,讓函數實現發生改變的時候,函數的調用不需要改變。我們只需要對函數的實現修 改一次,就完成了我們的工作。修改後的代碼如下:

public static void main(String args[]){System.out.println("Hello World");printSeperator();System.out.println("你好,世界");printSeperator();System.out.println("Bonjour tout le monde");printSeperator();System.out.println("Hallo Welt");}public static void printSeperator(){for(int i = 0 ; i < 20 ; i++){System.out.print(“+“);}System.out.println();}


4,提高程式的靈活性

使用函數,利用函數參數的變化,能夠讓代碼更加靈活。例如,假設現在對分 隔符的長度有不同的要求,要求第一個分隔字元長度為 20,第二個分隔字元長度為 25,第三個 分割符長度為 30。 這樣的需求,如果不適用函數的話,則必須要修改這三個輸出的地方,並且每個地方 的輸出語句都比較複雜。而如果使用函數的話,則可以讓函數增加一個參數,這個參數表 示分隔字元的長度。修改後的 printSeperator 函數如下:

public static void printSeperator(int n){for (int i = 0; i < n; i++){System.out.print(“+”);}System.out.println();}


這樣,在主函數中,只要對這個函數傳入不同的參數進行三次調用即可。修改後完整 的主函數如下

public static void main(String args[]){System.out.println("Hello World");printSeperator(20);System.out.println("你好,世界");printSeperator(25);System.out.println("Bonjour tout le monde");printSeperator(30);System.out.println("Hallo Welt");}



 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.