第七、Java的函數與函數重載

1、函數的概述

發現不斷進行加法運算,爲了提高代碼的複用性,就把該功能獨立封裝成一段獨立的小程序,當下次需要執行加法運算的時候,就可以直接調用這個段小程序即可,那麼這種封裝形形式的具體表現形式則稱作函數。

需求:把兩個整數相加:

public class FunctionDemo1{
	public static void main(String[] args){
		/*
		int a = 4+5;
		System.out.println("a="+a);
		int b = 3+9;
		System.out.println("b="+b);

	  */
		add(4,5)
	}
	public static int add(int a, int b){
		return a+b;	
	}
}

舉例1:地鐵自動售票機,接收紙幣或硬幣,返回車票,該售票機具有獨立功能,可以理解爲函數。有未知內容參與運算(要投幣,紙幣硬幣,多少錢)。有返回值(返回車票)

舉例2:手機,手機具備打電話功能,有未知內容(電話號碼),鍵盤是(形參),輸入的號碼是實際參數。

舉例3:銀行的ATM機,放入卡,輸入密碼(參數),轉賬,取款,查詢等都是函數的表現。




2、函數的格式

修飾符 返回值類型 函數名(參數類型 形式參數1,參數類型 形式參數2,…)

    {

           執行語句;

           需要被封裝的功能代碼;

           return 返回值;

    }

返回值類型: 運行這段程序得出的一個運算結果,結果類型,如果函數沒有返回值則用void

            來表示該函數沒有返回值。

函數名:僅僅是一個標識符,可以隨意起名字。

形式參數:是一個變量,用於存儲調用函數傳遞進來的實際參數。

實際參數:傳遞給形式參數的具體數值。

返回值:返回給調用者。

 

===============================================================

分析函數:
public static int add(){
int a =2;
int b =3;
return a+b;
}

修飾符: public static

返回值類型: int 。 返回值類型就是指函數運行完畢後,返回的結果的數據類型。
注意: 某些函數是沒有結果返回給調用者的,那麼這時候返回值類型是void。

函數名: add   函數名的作用:如果需要調用該函數就需要使用的函數名。 函數名只要符合標識符的命名規則即可。 
函數名的命名規範: 首單詞全部小寫,其他單詞的首字母大寫,其他小寫。
形式參數: 如果一個函數在運行的時候,存在着數據是要調用者確定 的,那麼這時候就應該定義形式參數。

return : 把一個結果返回給調用者。
================================================================


函數的特點:

1. 函數的作用就是把一個功能代碼給封裝起來,已達到提高功能代碼的複用性。
2. 函數定義好之後是需要被調用纔會執行的。 main函數是有jvm調用的,不需要我們手動調用。
3. 如果一個函數沒有返回值返回給調用者,那麼返回值類型必須是使用void表示。


如何定義一個函數:

1. 返回值類型。
2. 是否存在未知的參數(是否存在要由調用者確定的參數)。---->形式參數

函數的使用注意事項:

1、定義函數時,函數的結果應該返回給調用者,交由調用者處理。

2、函數中只能調用函數,不可以在函數內部定義函數。函數之間是平級的,相互之間是調用的關係。沒有定義函數之前,不能調用函數。

3、main方法是程序的入口由虛擬機調用,方法和方法之間不能嵌套,方法之間通過調用來使用。

4、方法什麼時候執行完畢:

     當執行完return語句,或者執行到方法末尾的花括號時方法結束。

5、輸出語句只能對有具體返回結果的函數的進行打印。

6、返回值類型是void的函數,是不可以被輸出語句打印的。

7、 函數需要實現功能,那麼函數只實現所需功能即可,不要實現不需要的功能。


注意: 如果一個函數的返回值類型是具體的數據類型,那麼該函數就必須要保證在任意情況下都保證有返回值。(除了返回值類型是void以外)


return 關鍵字的作用:
1. 返回數據給函數的調用者。
2. 函數一旦執行到了return關鍵字,那麼該函數馬上結束。 (能結束一個函數)


注意:一個函數的返回值類型 是void,那麼也可以出現return關鍵字,但是return關鍵字的後面不能有數據。


break關鍵字與return關鍵字的區別:
1.break關鍵字是結束一個循環。
2. return關鍵字是結束一個函數。


3、函數的應用

需求1:畫矩形

/*
	 	爲了提高代碼的複用性
	 	定義一個畫矩形的函數
	 		1、確定函數的運算結果的數據類型,void
	 		2、確定沒有未知參數。
	 */
	public static void  draw(int width , int height){
		for(int i = 0 ; i< height ; i++){
			for(int j = 0 ; j < width ; j++){
				System.out.print("*");
			}
			System.out.println();
		}
	}


需求2:兩個數字對比是否相等?

 /*
 		1、確定函數的運算結果的數據類型,boolean
 		2、確定沒有未知參數。a,b
	 */
	public static boolean  equlas(int a , int b){
		/**
		if(a==b){
			return true;
		}else{
			return false;
		}
		**/
		return a==b?true:false;
		
	}



需求3:比較兩個數的大小

  /*
	比較兩個整數誰大.
	*/
	public static int max(int a,int b)
	{
		/*
		if(a>b)
			return a;
		else
			return b;
		*/

		return a>b?a:b;
	}


4、函數的重載

1、函數重載的定義:在同一個類中,有一個以上的同名函數,只要函數的參數列表或參數類型不一樣即可,與返回值無關, 這些統稱爲方法的重載。

2、函數的重載存在的原因:爲了增強方法的閱讀性,優化了程序設計。

3、函數重載的作用: 同一個函數名可以出現了不同的函數,以應對不同個數或者不同數據類型的參數。
4、函數重載的要求
1. 函數名一致。
2. 形參列表不一致。(形式參數的個數或者是對應的數據類型不一致)
3. 與函數的返回值類型是無關的。


需求1:九九乘法表


       private static void print99() {
		for(int i = 1 ; i<= 9 ; i ++){
			for(int j = 1 ; j<=i ; j++){
				System.out.print(i+"*"+j+"="+(i*j)+" ");
			}
			System.out.println();
		}
	}

        //重載
	private static void print99(int num) {
		for(int i = 1 ; i<= num ; i ++){
			for(int j = 1 ; j<=i ; j++){
				System.out.print(i+"*"+j+"="+(i*j)+" ");
			}
			System.out.println();
		}
}


判斷那個方法是重載

void  show(int  w, double c, char b){}     


void show(int x, char y, double z){}   true       
void show(int a, double c, char b){}     false  

void show(int a, char b){}   true
void show(double c){}   true
double show(int x, char y, double z){}   true	






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章