1. 程式人生 > 其它 >方法的基礎語法與過載機制overload

方法的基礎語法與過載機制overload

前言:

    • 在Java語言中有這樣的一個機制:

      • 某個功能程式碼只需要寫一遍

      • 要使用這個功能,只需要給這個功能傳遞具體的資料

      • 這個功能完成之後返回一個最終的結果

            這樣程式碼就可以重複利用了,提高程式碼複用性。(這就是“方法”)

          • 使用這個方法我們稱為“呼叫/invoke”

          • 方法的本質是什麼

                  方法是一段程式碼片段,並且這段程式碼片段可以完成某個特定的功能,並且可以被重複利用。

                  方法定義在類體當中,在一個類中可以定義多個方法,方法編寫的位置沒有先後順序,可以隨意。

                  方法體中不能再定義方法!!!方法體由Java語句構成,方法體當中的程式碼遵守自上而下的順序依次執行。

                  方法

                • 方法的基礎語法

                • 方法的過載機制overload

                    • 關於Java語言中的方法:

                      1.方法怎麼定義,語法結構:

                      [修飾符列表] 返回值型別 方法名(形式引數列表){

                      方法體:

                      }

                    public class MethodTest{
                        piblic static void main(String[] args){
                              方法體 
                       } 
                    }

                    2.對以上的語法結構進行解釋說明:

                    2.1、關於修飾符列表

                    *可選項,不是必須的

                    *目前統一寫成:public static 【以後學】

                    *方法的修飾符列表當中有“static”關鍵字的話,怎麼呼叫這個方法?

                    -類名.方法名(實際引數列表);

                    2.2、返回值型別

                    *什麼是返回值?

                    一個方法是可以完成某個功能的,這個功能結束後大多數都是需要返回最終執行

                    結果的,執行結果可能是一個具體存在的資料。而這個具體的資料就是返回值。

                    *返回值型別?

                    返回值是一個具體存在的資料,資料都是有型別的,此處需要指定的是返回值的具

                    體型別。

                    *返回值型別都可以指定哪些型別呢?

                    Java任意一種型別都可以,包括基本資料型別和所有的引用資料型別。

                    *也可能這個方法執行結束之後不返回任何資料,Java中規定,當一個方法執行結束之

                    後不返回任何資料的話,返回值型別位置必須編寫:void關鍵字。

                    *返回值型別可以是:byte,short,int,long,float,double,boolean,char,String,void.....

                    *返回值型別若不是void,表示這個方法執行結束之後必須返回一個具體的數值。

                    當方法執行結束的時候沒有返回任何資料的話編譯器報錯。怎麼返回值呢,程式碼怎麼寫

                    呢? "return 值;",並且要求“值”的資料型別必須和“方法的返回值型別”一致,不然編譯器

                    報錯。

                    *返回值型別是void的時候,在方法體當中不能編寫“return 值;”這樣的語句。但是要注意

                    可以編寫“return;”這樣的語句。

                    *只要帶有return關鍵字的語句執行,return語句所在的方法結束

                    2.3、方法名:

                    *只要是合法的識別符號就行

                    *方法名最好見名知意

                    *方法名最好是動詞

                    *方法名首字母要求小寫,後面每個單詞首字母大寫

                    2.4、形式引數列表:簡稱形參

                    *形參是區域性變數:int a; double b;

                    *形參的個數可以是:0-N個

                    *多個形參之間用”逗號“隔開

                    *形參中起決定性作用的是形參的資料型別,形參的名字就是區域性變數的數字。

                    *方法在呼叫的時候,實際給這個方法傳遞的真實資料被稱為:實際引數,簡稱實參。

                    *實參列表和形參列表必須滿足:

                    -數量相同

                    -型別對應相同

                    2.5、方法體必須由大括號括起來,方法體中的程式碼有順序,遵循自上而下的順序依次執行。

                    並且方法體由Java語句構成,每一個Java語句以”;“結尾

                    3.方法怎麼呼叫?

                    方法只定義不去呼叫時不會執行,只有在呼叫的時候才會去執行。

                    語法規則:《方法的修飾符列表當中有static》

                    類名.方法名(實參列表); <這是一條Java語句,表示呼叫某個類的某個方法,傳遞這樣的

                    實參>

                    public class MethodTest{
                     public static void main(String[] args){
                         MethodTest.sum(10,20);
                     }
                     public static void sum(int x,int y){
                          System.out.println(x + "+" + y + "=" + (x+y));
                     }
                    }

                    方法的呼叫不一定在main方法當中,可以在其他方法當中。只要是程式可以執行到的位置,都可以呼叫其他方法

                    public class MethodTest{
                        //主方法
                        public static void main(String[] args){
                            //呼叫sum方法
                            MethodTest.sum(10,20);
                        }
                        public static void sum(int a,int b){
                            System.out.println(a + "+" + b + "=" + (a+b));
                            //呼叫doSome方法
                            MethodTest.doSome();
                        }
                        public static void doSome(){
                            System.out.println("do some");
                        }
                    }

                    方法的返回值型別不是void的時候。

                    1.返回值型別不是void的時候,要求必須執行”return 值;“這樣的語句來完成值的返回

                    2.一個方法有返回值的時候,當我們呼叫這個方法,方法返回了一個值,對於呼叫者來說,這個返回值可以接收,也可以選擇不接受。但是大部分情況下我們都是選擇接收的。

                    public class MethodTest{
                        public static void main(String[] args){
                            int i = shang(10,2);  //採用變數接收返回值,也可以不接收
                            System.out.println(i);
                        }
                        /*
                            需求:
                                請定義並實現一個方法,該方法可以計算兩個int型別資料的商,
                                要求將最終的計算結果返回給呼叫者。
                        /*
                        public static int shang(int a,int b){
                            int c = a/b;
                            return c;
                        }
                    }

                    深入理解return

                    *帶有return關鍵字的Java語句只要執行,所在的方法執行結束。

                    *在”同一個作用域“當中,return語句下面不能編寫任何程式碼,因為這些程式碼永遠都執行不到,所以編譯報錯

                    public class MethodTest{
                        public static void main(String[] args){
                        }
                        public static int m(){ //編譯報錯:缺少返回語句,以下程式編譯器認為無法百分百保證"return 1;"會執行。
                            int a = 10;
                            if(a>3){
                                return 1;
                                //System.out.println("hello");s
                                //這裡不能編寫程式碼,編譯錯誤,因為無法訪問的語句
                            }
                        }
                    }

                    return終止的是整個方法,下面這段程式碼示例輸出結果沒有Hello World

                    public class MethodTest{
                        public static void main(String[] args){
                            m();
                        }
                        public static void m(){
                            for(int i = 0;i<10;i++){
                                if(i == 5){
                                    return; //return終止的是m()方法,break終止的是for迴圈
                                }
                                System.out.println("i -->" + i);
                            }
                            System.out.println("Hello World");
                        }
                    }