隨筆 - 40, 文章 - 0, 評論 - 20, 引用 - 0
          數(shù)據(jù)加載中……

          關于Java中方法重載的問題

          Java中支持方法名相同,但是方法參數(shù)不同而自動去選擇執(zhí)行哪一個方法,如print(int i)和print(String str),雖然方法名相同,但是參數(shù)不同。象這里的int和String 參數(shù)差異比較大所以看起來這種重載沒什么差別,但是如果是類型差別不大, 會出現(xiàn)什么情況呢?

             看下面的代碼:

              public void f(float i){
                  System.out.println("float");
              }

              public viod f(double i){
                 System.out.println("double");
             }

              那么執(zhí)行 f(5)會輸出什么呢?5是被認為是float類型還是double類型還是會報錯呢?執(zhí)行結(jié)果是 float 。原來在這種情況下,該數(shù)據(jù)類型能被轉(zhuǎn)為一個較大的數(shù)據(jù)類型,比5較大的數(shù)據(jù)類型是float,其次才到double,所以輸出結(jié)果是float。還有一個特殊的情況就是如果輸入類型為char,如這里我們執(zhí)行f('a'),

          不要以為這會出錯,其實是不會出錯的,因為如果沒有發(fā)現(xiàn)一個準確的char于它匹配,那么它就把這個char轉(zhuǎn)換成int類型,如果沒有int類型和它匹配,在去尋找較大的數(shù)據(jù)類型,這里它找到了float,所以這里執(zhí)行flaot('a')輸出的還是 float。

            下面再討論另外一種情況,譬如說下面這種情況:

             定義了下面一個方法:

            public void f(int i){
              System.out.println("int ");
          }

            如果執(zhí)行f(100.99)會不會在這種數(shù)據(jù)類型大于這種重載方法期待的變量時會怎么處理呢?會不會把這種較大的數(shù)據(jù)類型縮小到期待的數(shù)據(jù)類型?編譯一下,很遺憾出錯了,在這種情況下是出錯的。

          這么快就12點半了,睡覺了~~~不然明天早晨爬不起來了。

          posted on 2005-06-10 00:20 月亮 閱讀(372) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 赤城县| 芜湖市| 昭平县| 阿城市| 随州市| 长兴县| 碌曲县| 怀仁县| 甘谷县| 临海市| 卫辉市| 偏关县| 哈尔滨市| 阳山县| 民丰县| 香港 | 双鸭山市| 区。| 喀喇| 盱眙县| 新昌县| 嵊州市| 伊金霍洛旗| 揭阳市| 尉氏县| 鸡东县| 顺平县| 克拉玛依市| 沽源县| 博爱县| 大宁县| 长葛市| 吉木萨尔县| 砚山县| 太康县| 深州市| 邹城市| 宽城| 探索| 三河市| 翁牛特旗|