Java語言由8個模塊構成,分別為:關鍵字、標識符(包名、類名、接口名、常量名、變量名等)、注釋、常量和變量、運算符、語句、函數、數組。
本片主要介紹Java中的函數,函數是Java中最小的功能單元。
1.函數的定義
1) 定義:指在類中的具有特定功能的一段獨立小程序,也稱為方法。
2) 格式:
修飾符 返回值類型 函數名(參數類型 形式參數1,參數類型 形式參數2, ... )
{
執行語句;
return 返回值;
}
返回值類型:函數運行後的結果的數據類型。
參數類型:是形式參數的數據類型。
實際參數:傳遞給形式參數的具體數值。
return:用於結束函數。
返回值:該值會返回給調用者。
3) 范例
//計算任意整數*3+5的結果
class FunctionDemo{
public static void main(String[] args){
int x=4;
System.out.println(x*3+5);
int y=6;
System.out.println(y*3+5);
}
}
發現以上的運算,因為獲取不同數據的運算結果,代碼出現了重復。
為了提高代碼的復用性,對代碼進行抽取。
將這個部分定義成一個獨立的功能,方便使用。
Java中對功能的定義是通過函數的形式來體現的。
即需要定義一個功能:完成任意整數*3+5的值。
public static int getResult(int num){
return num*3+5;
}
因此,上面的代碼就可以簡寫為:
public class FuntionDemo{
public static void main(String[] args){
int x=getResult(4);
int y=getResult(6);
System.out.println("x="+x+",y="+y);
}
}
public static int getResult(int num){
return num*3+5;
}
//該程序運行結果為:x=17,y=23
2.函數的特點
1) 定義函數可以將功能代碼進行封裝。
2) 便於對該功能進行復用。
3) 函數只有被調用才會執行。
4) 函數的出現提高了代碼的復用性。
5) 當函數沒有具體返回值的情況,返回值類型用關鍵字void標識,即void代表的是函數沒有具體返回值,那麼該函數中的return語句如果在最後一行可以省略不寫,該功能也不能在輸出語句中輸出,在功能中可以輸出,函數直接調用。
6) 注意寫法格式:
函數只能調用函數,不可以在函數內部定義函數(函數是平級的,誰也不包含誰)。
定義函數時,函數的結果應該返回給調用者,交由調用者處理。
7) 例子說明:直接打印結果,不返回值(注意對應第五個特點)
public class FuntionDemo{
public static void main(String[] args){
getResult(5);
}
public static void getResult(int num){
System.out.println(num*3+5);
return; //return可以省略不寫。
}
}
//該程序運行結果為:20
3.函數的應用
1) 如何定義一個函數?
*1* 既然函數是一個獨立的功能,那麼先明確該功能的運算結果是什麼。
*2* 再明確在定義該功能的過程中是否需要未知的內容參與運算。
*3* 定義函數時只需完成相對應的功能,將結果返回給調用者,調用者怎麼使用是調用者的事情。
2)實例說明
這裡以簡單的加法運算為例,主要介紹函數的應用,對於函數的特點體現不是特別明確。
*1* 需求:定義一個功能,完成3+4的運算,並將結果返回給調用者。
*2* 思路:1.明確該功能的運算結果:是一個整數的和,即明確函數的返回值類型。
2.再明確在定義該功能的過程中沒有未知的內容參與運算,即明確函數的參數列表(參數類型和參數個數)。
*3* 程序實現:
class FunctionDemo2{
public static void main(String[] args){
int sum=getAdd();
System.out.println("sum="+sum);
}
public static int getAdd(){
return 3+4;
}
}
*4* 結果分析:該程序運行結果為:sum=7
以上函數的功能,結果是固定的,無擴展性。
為方便用戶需求,由用戶來指定加數和被加數,這樣功能才有意義。
*1* 需求:定義一個功能,完成任意兩個整數加法的運算,並將結果返回給調用者。
*2* 思路:
功能的結果是一個整數,即返回值類型為int。
有兩個未知內容參與運算,類型為int。
*3* 程序實現:
class FunctionDemo2{
public static void main(String[] args){
int sum=getAdd(3,5);
System.out.println("sum="+sum);
int sum=getAdd(6,6);
System.out.println("sum="+sum);
public static int getAdd(int a int b){
return a+b;
}
}
*4* 結果分析:該程序運行結果為:sum=8
sum=12
3)函數的具體應用實例(一)
*1* 需求:判斷兩個數是否相等。
*2* 思路:
功能的結果是一個boolean型變量,即返回值類型為boolean。
有兩個未知內容參與運算,類型為int。
*3* 程序實現:
class FunctionDemo{
public static void main(String[] args){
compare(3,5);
System.out.println(compare(3,5));
}
public static boolean compare(int a,int b){
return (a==b)?true:false;
}
}
*4* 結果分析:該程序運行結果為:flase
4)函數的具體應用實例(二)
*1* 需求:輸出兩個整數中的最大值。
*2* 思路:
功能的結果是int型變量,即返回值類型為int。
有兩個未知內容參與運算,類型為int。
*3* 程序實現:
class FunctionDemo{
public static void main(String[] args){
getMax(3,5);
System.out.println(getMax(3,5));
}
public static int getMax(int a,int b){
return (a>b)?a:b;
}
}
*4* 結果分析:該程序運行結果為:5
4)函數的具體應用實例(三)
*1* 需求:定義一個功能,用於打印矩形。
*2* 思路:
功能的結果直接打印,所以返回值類型是void。
有兩個未知內容(矩形的行和列)參與運算,類型為int。
*3* 程序實現:
class FunctionDemo{
public static void main(String[] args){
draw(2,4);
printHr();
draw(3,6);
printHr();
}
public static void draw(int row,int col){ //實現矩形的打印功能
for(int x=0;x<row;x++){
for(int y=0;y<col;y++){
System.out.print("*");
}
System.out.println();
}
}
public static void printHr(){ //將每個矩形分割開
System.out.println("----------------------");
}
}
*4* 結果分析:該程序運行結果為:
****
****
----------------------
******
******
******
----------------------
4.函數的重載
1) 重載的概念
在同一個類中,允許存在一個以上的同名函數,只要它們的參數個數或者參數類型不同即可。。
2) 重載的特點
與返回值類型無關,只看參數列表。
3) 重載的好處
方便於閱讀,優化了程序設計。
4) 重載示例
*1*返回任意兩個小數的和
int add(double a,double b){return a+b;}
*2*返回任意兩個整數的和
int add(int a,int b){return a+b;}
*3*返回任意三個整數的和
int add(int a,int b,int c){return a+b+c;}
5) 重載的應用(什麼時候用重載)
當定義的功能相同,但參與運算的未知內容不同時,通過參數列表的不同來區分多個同名函數。
6)重載應用實例
class FunctionOverload {
public static void main(String[] args) {
int x=add(3,6);
System.out.println(x);
int y=add(3,6,7);
System.out.println(y);
}
//定義一個加法運算,獲取兩個整數的和。
public static int add(int a, int b){
return a+b;
}
//定義一個加法運算,獲取三個整數的和。
public static int add(int a, int b,int c){
return a+b+c;
}
}
//該程序運行結果為:9
16