版權聲明
原創作者:是飄飄呀!
博客地址:https://blog.csdn.net/weixin_44216392
函數
首先,當我們看到函數這兩個字是什麼反應呢?二元二次函數、三角函數…?哦不是的呢!在我們java裏的函數也叫方法是爲了提高代碼的複用性,就把某個功能單獨封裝成一小段獨立的程序,當下次需要執行這個功能的時候,直接調用封裝的這段小程序即可實現,那麼這種以封裝的具體表現形式我們就稱之爲函數;
接下來我們先看一個兩數相加的小栗子:
public static void main(String[] args) {
/*
* 最開始的寫法
* int a = 3;
* int b = 4;
* System.out.println(a+b);
*/
System.out.println(add(5, 8));
}
public static int add(int a,int b) {
return a+b;
}
那我們怎麼理解這個函數呢;
舉例:地鐵自動售票機,接收紙幣或硬幣,返回車票,該售票機具有獨立功能,可以理解爲函數。
那接下來我們正式進入函數的學習
函數的格式
修飾符 返回值類型 函數名(參數類型 形式參數1,參數類型 形式參數2,…){
執行語句;
return 返回值;
}
返回值類型:運行這段程序得出的一個運算結果,結果類型,如果函數沒有返回值,則總void來表示該函數沒有返回值
函數名:僅僅是一個標識符,可以隨意起名字但要符合java命名規範
形式參數:是一個變量,用於存儲調用函數傳遞進來的實際參數
實際參數:傳遞給形式參數的具體數值
返回值:返回給調用者
在我們定義一個函數的時候需要搞清楚地方:
- 是否有位置內容參與運算
- 是否具有返回值
栗子2:
public static int getMax(int a,int b) {
int result;
if(a>b) {
result=a;
}else {
result=b;
}
return result;
}
現在我們仔細的解析一下這串代碼:
該方法方法名爲:getMax,方法的作用是獲取找出兩個整數中較大的值。
該方法有兩個int型參數,:x和y,方法返回兩個數中較大的一個。
public static 是方法的修飾符
int 是方法的返回值類型
getMax 是方法的方法名
**(int x,int y)**是參數列表,x和y是形式參數。
{} 花括號內的代碼是方法體
return result; result 是返回值。
那如何調用函數呢,在我們定義好函數後,想要使用就必須先調用;
public static void main(String[] args) {
System.out.println(getMax(-5, 8));
int max = getMax(100, -1000);
System.out.println(max);
}
在main方法中調用getMax()方法,100和-1000就是給該方法傳遞的實際參數。如果方法有返回值,可以定義一個變量接收返回值,變量類型和方法返回值類型一致。本例中通過int類型變量max接收了getMax方法的返回值。
方法什麼時候執行完畢?
當執行完return語句,或者執行到方法末尾的花括號時方法結束。
函數的特點
- 定義函數可以將功能代碼進行封裝
- 便於對該功能進行復用
- 函數只有被調用纔會被執行
- 函數的出現提高了代碼的複用性
- 對於函數沒有具體返回值的情況,返回值類型用關鍵字void表示,那麼該函數中的return語句如果在最後一行可以省略不寫。
編寫函數是需要注意:
- 方法不調用不執行,換一句說:方法只有被調用後纔會執行
- 方法與方法是平級關係,不能嵌套定義;即不可在方法中再定義方法
- 方法定義的時候參數之間用逗號隔開
- 方法調用的時候不用再傳遞數據類型
- 如果方法有明確的返回值,一定要有return帶回一個值
- 函數的結果應該返回給調用者,交由調用者處理
- return語句執行後,將終止本函數的執行,即函數執行完成,也就是說在return後面的語句是不起作用的,切編譯器也會報錯。
函數的應用
- 成績等級
public class Demo01 {
public static void main(String[] args) {
//調用方法,傳入實參
printGrade(90);
printGrade(59.5);
}
public static void printGrade(double score) {
if (score >= 90.0)
System.out.println("A");
else if (score >= 80.0)
System.out.println("B");
else if (score >= 70.0)
System.out.println("C");
else if (score >= 60.0)
System.out.println("D");
else
System.out.println("E");
}
}
結果如下:
- 畫矩形
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();
}
函數的重載
在同一個類中,可以有一個以上的方法使用相同的方法名,但這些方法的參數必須不同,或者是參數個數不同,或者是參數類型不同,這些方法成爲方法(函數)重載;
判斷兩個方法之間是否重載,這和方法的返回類型無關,也和拋出的異常類型無關,只和方法的參數有關。
例如:
//方法的參數類型和順序不同
public String methodName(int i, String name, int j)
public String methodName(int i, int j)
public String methodName(int i, String name)