<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## Java編程那些事兒54—方法調用 鄭州游戲學院 陳躍峰 出自:[http://blog.csdn.net/mailbomb](http://blog.csdn.net/mailbomb) **7.4 方法調用** 方法聲明是創建一個新的功能,聲明出來的方法在需要的時候可以通過調用執行該方法的功能,方法只有被調用才能被執行。 在Java程序中有一個基本的main方法,其方法聲明如下: public static void main(String[] args) 該方法包含在開始的代碼框架中,這是一個特殊的方法。Java語法規定,J2SE的代碼都從該方法開始執行,如果一個代碼中沒有main方法,則該代碼不能被直接運行。所以main方法也稱作J2SE程序的入口方法,在運行程序時,自動調用對應代碼中的main方法開始程序的執行。 由于上面講述的原因,所以一個方法如果需要得到執行,則需要直接或間接在main方法中進行調用。 在調用方法時,程序的執行流程會進入方法的內部,當執行到方法內部的return語句或執行完方法內部的代碼以后,則返回到調用該方法的位置繼續向下執行。 方法調用的語法分為以下兩種: 1.?一個類內部的方法調用 指調用以及被調用的方法都在一個類的內部。 2.?不同類之間的方法調用 指調用以及被調用的方法位于不同的類內部。 由于類的概念現在還沒有涉及到,所以這里指講一個類內部的方法調用語法,關于不同類之間的方法調用則在后續的章節中進行介紹。 **7.4.1 一個類內部方法調用語法** 在前面的代碼框架中,以下代碼就是聲明類的結構: public class 文件名{ 在該聲明后續大括號內部的代碼,稱作一個類的內部。 在進行方法調用時,調用的語法格式和static修飾符有關,所以按照一個方法在聲明時是否有static修飾分為兩類: 1.?有static修飾的稱作靜態方法 2.?沒有static修飾的稱作非靜態方法 這樣一個類內部的方法調用就存在四種情況: 1.?在非靜態方法內部調用非靜態方法 2.?在非靜態方法內部調用靜態方法 3.?在靜態方法內部調用靜態方法 4.?在靜態方法內部調用非靜態方法 其中前三種情況的調用都是直接調用,直接調用的語法格式為: 方法名(參數1值,……); 這里方法名為被調用的方法名稱,后續緊跟一對小括號,括號內部依次書寫調用該方法時傳入參數的值,語法上要求傳入參數的個數、每個參數的類型都必須和方法聲明時保持一致。而這里調用的表達式就代表方法的返回值,可以根據需要使用返回值進行賦值。 示例代碼如下: ~~~ ???????? public class CallMethod{ ???????? ???????? public static void main(String[] args){ ?????????????????? ???????? int a = 10; ?????????????????? ???????? int b = 2; ?????????????????? ???????? int c = 3; ?????????????????? ???????? int d = 32; ??????????????????????????? max(a,b);?//只比較,比較以后返回值丟失 ??????????????????????????? int n = max(5,a);?//比較,并把返回值賦值給變量n ??????????????????????????? int m = max(c,d);?//比較,并把返回值賦值給變量m ??????????????????????????? //比較a、b、c、d四個數字的最大值 ??????????????????????????? int maxNumber = max(max(a,b),max(c,d));? ???????? ???????? } ? ???????? ???????? public static int max(int a,int b){ ?????????????????? ???????? if(a > b){ ??????????????????????????? ???????? return a; ?????????????????? ???????? }else{ ??????????????????????????? ???????? return b; ?????????????????? ???????? } ???????? ???????? } } ~~~ 該示例在靜態的main方法內部調用靜態的max方法,因為max方法在聲明時參數列表為2個int的參數,則調用的時候必須傳入2個int值,可以是int的變量也可以是int數值。則調用的基本格式為: max(參數值1,參數值2) 調用的表達式可以在代碼中單獨成行,當方法的返回值類型不是void時,可以接收方法的返回值,也可以不接收。方法的返回值是一個確定類型的值,所以在以上比較時,方法調用之間可以進行嵌套。 int maxNumber = max(max(a,b),max(c,d)); 其中max(a,b)是獲得a和b的最大值,max(c,d)是獲得c和d的最大值,然后比較兩個獲得的最大值,該代碼的功能和以下代碼的功能相同: int maxNumber = max(a,max(b,max(c,d))); 總得來說,前三種情況的調用都是使用該種格式。 對于最后一種情況,也就是在靜態方法內部調用非靜態的結構在語法上則比較復雜,以下是一個簡單的示例: ~~~ ???????? ???????? public class CallMethod2{ ???????? ?????????????????? public static void main(String[] args){ ?????????????????? ?????????????????? CallMethod2 cm = new CallMethod2(); ?????????????????? ?????????????????? int n = cm.max(1,2); ???????? ?????????????????? } ? ???????? ?????????????????? public int max(int a,int b){ ?????????????????? ?????????????????? if(a > b){ ??????????????????????????? ?????????????????? return a; ?????????????????? ?????????????????? }else{ ??????????????????????????? ?????????????????? return b; ?????????????????? ?????????????????? } ???????? ?????????????????? } } ~~~ 在該代碼涉及的語法格式在后續的代碼中將進行講解,這里只做簡單的說明。其中: CallMethod2 cm = new CallMethod2(); 該行代碼聲明并創建了一個CallMethod2類型的對象cm。接著的代碼: int n = cm.max(1,2); 在調用max方法時,則使用對象名.方法名調用對應的方法,這里參數的規則和上面介紹的相同。 **7.4.2 方法調用后的執行流程** 在方法調用時,程序的執行流程和以前的結構就有所區別。簡單說,就是當遇到方法調用時,程序的執行流程將跳轉到被調用的方法內部,直到被調用的方法返回時,才從調用的位置繼續向下執行。 以下是一個演示調用過程的示例代碼: ~~~ ???????? public class CallMethod3{ ???????? ???????? public static void main(String[] args){ ?????????????????? ???????? System.out.println(1); ?????????????????? ???????? printTest(); ?????????????????? ???????? System.out.println(2); ?????????????????? ???????? max(10,20); ?????????????????? ???????? System.out.println(3); ???????? ???????? } ? ???????? ???????? public static int max(int a,int b){ ??????????????????????????? System.out.println("進入max方法內部!"); ?????????????????? ???????? if(a > b){ ??????????????????????????? ???????? return a; ?????????????????? ???????? }else{ ??????????????????????????? ???????? return b; ?????????????????? ???????? } ???????? ???????? } ? ???????? ???????? public static void printTest(){ ??????????????????????????? System.out.println("進入printTest方法內部!"); ?????????????????? ???????? int a = 10; ??????????????????????????? System.out.println("printTest方法執行完畢!"); ???????? ???????? } } ~~~ 則該代碼執行時的輸出如下: 1 進入printTest方法內部! printTest方法執行完畢! 2 進入max方法內部! 3 從程序執行的輸出就可以清晰的看出方法調用時代碼的執行順序。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看