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