程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 動態-JAVA 中Null值到底是什麼

動態-JAVA 中Null值到底是什麼

編輯:編程綜合問答
JAVA 中Null值到底是什麼

public class test {

public static void main(String[] args) throws Exception {

Temp temp = new Temp();
temp.test("1");
temp.test(null);
}

}

public class Temp {
public void test(Object a){
System.out.println("test Object");
}
public void test(String a){
System.out.println("test string");
}
}

為什麼輸出結果為
test Object
test Object

最佳回答:


輸出結果是
test string
test string
null就是代表空對象,在內存中沒有占用空間,只占了一個引用空間。

只針對你寫的測試例子來將,你的例子更應該是一個overload重載的測試用例。
簡單說下重載:jdk重載編譯期間就決定了代碼的走向,而編譯時判斷依據就是根據方法中參數類型,以及方法調用者傳入的參數,將前者最大程度(Class繼承結構)匹配後者的方法,作為編譯結果。運行時也將使用次方法。

回到你的問題上,null既然是空對象,那麼既可以作為Object (如Object o = null;編譯通過),也可以作為String (如String s = null;編譯通過)。java.lang.String也是繼承的Object類。所以最大程度匹配後,編譯器決定執行public void test(String a)方法。

綜上,代碼test(null)的運行結果為:test string

對重載想要有更深的理解,推薦你查看http://docs.oracle.com/javase/specs/jls/se5.0/html/expressions.html#15.12.2.10

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved