<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                上一節我們說了靜態使用細節時提到了main函數是靜態的,其實,對于我們初學者,真是對main函數是什么樣認識還很模糊,那么這一節我們就解析一下main函數. main函數的固定格式:**public static void main(String[] args)** java語言中主函數有兩個特殊之處: **1.格式是固定的.** **2.被jvm所識別和調用.** ** ** 那么它們第一個單詞都有什么意義呢,我們下面就學習一下: public:因為權限必須是最大的. static:虛擬機對運行main函數是不需要對象的,直接用主函數所屬類名調用即可. void:主函數沒有具體的返回值.虛擬機調用主函數. main:函數名,不是關鍵字,只是一個jvm識別的固定名字. String[] args:這是主函數的參數列表,是一個數組類型的參數,而且元素都是字條串類型. 那么我們關鍵點來了,我們知道,任何一個函數被調用,如果它有參數,那么就要傳遞相對應的實參. 那么對于主函數,傳遞的實參是什么?誰來調用主函數,虛擬機調用,只要有參數,我們就必須傳遞對應實參. 那么到底傳的實參是什么呢? 我們看下面的例子: ~~~ class MainTest { public static void main(String[] args) //其實虛擬機傳的參數是 new String[0] { System.out.println(args); } } ~~~ 我們看一下運行結果: ![](https://box.kancloud.cn/2016-05-18_573c41edaf7e5.jpg) 我們運行并看到了 ?[Ljava.lang.String;@139a55,說明確實有個字符串數組的實體,那么這個字符串數組有長度是多少呢?我們再來測試: ~~~ class MainTest { public static void main(String[] args) //其實虛擬機傳的參數是 new String[0] { System.out.println(args); System.out.println(args.length); } } ~~~ 結果: ![](https://box.kancloud.cn/2016-05-18_573c41edc30e5.jpg) 我們看實體的長度,結果為0. 所以主函數實際傳遞的參數是創建了一個String類型的數組對象實體,即 new String[0] 這就是java語言中main函數為我們傳遞參數提供了可能,我們可以把我們想要傳遞的參數傳遞進去.為我們留下了余地. 那么我們又會問,為什么參數是字符串類型呢? 我們知道,字符串類型可以與其他數據類型進行轉換,所以,無論我們傳什么,傳進去的都是字符串.那為什么是字符串呢,這是因為字符串具有通用性,我們只需要根據實際進行字符串轉換. 那么什么時候傳值呢?當然是虛擬機調用主函數時傳值.我們接著看下面例子: ~~~ class MainTest { public static void main(String[] args) //其實虛擬機傳的參數是 new String[0] { System.out.println(args); System.out.println(args.length); System.out.println(args[0]); } } ~~~ 這個例子中是打印出實參數組中的第一個元素. 我們可以這樣傳值:java MainTest haha xixi hehe ![](https://box.kancloud.cn/2016-05-18_573c41edd7a9c.jpg) 我們看到了打印出字符中數組參數的長度為3,第一個元素內容是haha,既然我們能夠把我們想要傳入的參數傳入main函數,那么我們把所有的參數打印出來: ~~~ class MainTest { public static void main(String[] args) //其實虛擬機傳的參數是 new String[0] { System.out.println(args); System.out.println(args.length); for(int x=0;x<args.length;x++) System.out.println(args[x]); } } ~~~ 結果: ![](https://box.kancloud.cn/2016-05-18_573c41edef338.jpg) 這樣就很清晰了,我們可以在jvm調用main函數的時候傳入我們想要運行的參數并進行處理. 我們再來看一個小細節,那就形式參數args,其實我們args就是main函數的形式參數變量名,那么它可不可以用其它的名字呢?我們看一例子: ~~~ class MainTest { public static void main(String[] x) //其實虛擬機傳的參數是 new String[0] { System.out.println("運行正常!"); } } ~~~ 結果: ![](https://box.kancloud.cn/2016-05-18_573c422a0b724.jpg) 我們可以看到,對于這個參數名是可以換成其他名字,這也是主函數中唯一一個可以變化的地方.并且,其實在早期時,這個名字其實是arguments,意思是參數,由于是字符串的數組,所以是復數. 同時我們再來看一個小細節: ~~~ class MainTest { public static void main(String[] x) //其實虛擬機傳的參數是 new String[0] { System.out.println("運行正常!"); } public static void main(int[] x) {} } ~~~ 結果: ![](https://box.kancloud.cn/2016-05-18_573c422a0b724.jpg) 我們會發現程序正常運行,這更加說了main就是一個函數名,并且兩個main方法之間是重載關系,而jvm只會找格式固定的main函數. 所以當我們這樣做時: ~~~ class MainTest { public static void main(String[] args) //其實虛擬機傳的參數是 new String[0] { System.out.println("運行正常!"); } public static void main(String[] x) {} } ~~~ 結果: ![](https://box.kancloud.cn/2016-05-18_573c422a28789.jpg) 這時編譯直接拋出異常,其實這兩個函數,只是參數名不相同,實際是同一函數. 我們在以后的編程過程中多注意這兩個小細節。
                  <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>

                              哎呀哎呀视频在线观看