1. 關於java的null
首先java對象的產生是分兩步的:
1.在棧區聲明對象 如A a,這時聲明的內容相當於一個指針(我們姑且認為它是一個指針,也可以理解為引用),當a=null時表明這是一個沒有指向任何對象.
2.實例化a,操作如下a=new A()這是在堆區為a分配了空間.
也就是由棧區的a指向堆區的new A()對象.
而a=null則是表明,首先,a是必然在棧區的,a的值是一個地址(假設它真的是一個指針),a=null表示的是a的值是null,與堆區無關
此時的a與堆並無關系,何況java中有一種申請垃圾回收的手段便是將一個對象賦值為null以切斷與之前關聯對象的關系,因此答案應該是2.
2. java null 引用類型
調用方法的時候null會先找子類,沒有子類才找父類,
class father{
}
class child extends father{
}
class son extends child{
}
public class TestNull{
public static void f(child c){
System.out.println("child.method.");
}
public static void main(String args[]){
f(null);
}
public static void f(son s){
System.out.println("son.method");
}
public static void f(father f){
System.out.println("father.method.");
}
}
結果是:son.method
3. null在java中是什麼意思
null是沒有地址
""是有地址但是裡面的內容是空的
好比做飯 null說明連鍋都沒有 而""則是有鍋沒米
雖然二者看起來都是沒有米 但是意義卻不同
4. 什麼是null引用
null引用時Java對類類型變數的內存分配採取的方式,說明變數時,在內存中為其建立一個引用,並置初值null,表示不指向任何內存空間。然後,需要程序員用new申請相應的內存空間,其大小依class的定義而定,並將該段內存的首地址賦給剛才建立的引用
5. 哪位能解釋一下JAVA中的 null, 並且對象、String等等,都可以賦值為null
先說下null,在Java裡面,包括C++,C#,都是指的一個空的內存地址,
我想你應該也知道,在Java裡面String也是對象,而對象和基本數據類型的區別就是對象裡面存放的是一個內存地址,基本數據類型裡面存放的是一個確切的值
這樣你明白為什麼能把null賦給對象和String了吧。其實,你如果了解C裡面的指針,你就能很輕松的弄明白這些問題。
6. Java中的null是個什麼東西
null...
是空引用啊,表示不引用任何對象。表達式和null比較就是判斷這個表達式的值到底是不是某個對象的引用。
路徑是啥...?
7. java中null 代表著什麼意思的關鍵字
一、null是代表不確定的對象
Java中,null是一個關鍵字,用來標識一個不確定的對象。因此可以將null賦給引用類型變數,但不可以將null賦給基本類型變數。
比如:int a = null;是錯誤的。Ojbect o = null是正確的。
Java中,變數的適用都遵循一個原則,先定義,並且初始化後,才可以使用。我們不能int a後,不給a指定值,就去列印a的值。這條對對於引用類型變數也是適用的。
有時候,我們定義一個引用類型變數,在剛開始的時候,無法給出一個確定的值,但是不指定值,程序可能會在try語句塊中初始化值。這時候,我們下面使用變數的時候就會報錯。這時候,可以先給變數指定一個null值,問題就解決了。例如:
Connection conn = null;
try {
conn = DriverManager.getConnection("url", "user", "password");
} catch (SQLException e) {
e.printStackTrace();
}
String catalog = conn.getCatalog();
如果剛開始的時候不指定conn = null,則最後一句就會報錯。
二、null本身不是對象,也不是Objcet的實例
null本身雖然能代表一個不確定的對象,但就null本身來說,它不是對象,也不知道什麼類型,也不是java.lang.Object的實例。
可以做一個簡單的例子:
//null是對象嗎? 屬於Object類型嗎?
if (null instanceof java.lang.Object) {
System.out.println("null屬於java.lang.Object類型");
} else {
System.out.println("null不屬於java.lang.Object類型");
}
結果會輸出:null不屬於java.lang.Object類型
三、Java默認給變數賦值
在定義變數的時候,如果定義後沒有給變數賦值,則Java在運行時會自動給變數賦值。賦值原則是整數類型int、byte、short、long的自動賦值為0,帶小數點的float、double自動賦值為0.0,boolean的自動賦值為false,其他各供引用類型變數自動賦值為null。
這個具體可以通過調試來看。
四、容器類型與null
List:允許重復元素,可以加入任意多個null。
Set:不允許重復元素,最多可以加入一個null。
Map:Map的key最多可以加入一個null,value欄位沒有限制。
數組:基本類型數組,定義後,如果不給定初始值,則java運行時會自動給定值。引用類型數組,不給定初始值,則所有的元素值為null。
五、null的其他作用
1、判斷一個引用類型數據是否null。 用==來判斷。
2、釋放內存,讓一個非null的引用類型變數指向null。這樣這個對象就不再被任何對象應用了。等待JVM垃圾回收機制去回收。
8. Java中的null如何理解
返回false,因為null不是任何類的實例。null就是空的引用。
List
集合里可以用null作為參數,是因為List默認允許加入空值,所以使用list.add(null)才不會有錯。
但是如果對於不接受空值的集合傳入null做參數就會報空指針異常了,比如HashTable就不接受null作為鍵或值。
對於你的補充:
1
結果是
List
doesn't
contain
null
List
contains
null
List
contains
null
這些你自己測試就可以看到;
2
List
是一個有序的集合,它裡面存儲的每一個元素都是對象,確切來說是對象的引用(就是存放真正對象所在的內存地址);對象的引用指向的是真正的對象,你直接存入null和你定義一個Object對象賦值為null然後再存入都是一樣的,它就代表一個引用位置,而這個位置是空也就是並沒有指向什麼具體的對象,它的值是null,所以你看到的都是null;
3
結果就是上面這樣出來的。
9. JAVA中,null,是什麼意思
null意思是空,指什麼都沒有,聲明一個對象為空,就是告訴JAVA虛擬機要給該對象分配內存地址,此時就可以拿來用了。例如:
String str = null;
是聲明了一個String類型的對象,但是該對象是沒有具體的值,只是在內存中存在一個str對象。
10. java中 如何顯式的給對象的引用變數賦null
當執行new為一個對象分配內存時,Java自動初始化所分配的內存空間。對於數值變數,賦初值0。對於布爾變數,初值為false。對於引用,即對象類型的任何變數,使用一個特殊的值null。
在Java中,null值表示引用不指向任何對象。運行過程中系統發現使用了這樣一個引用時·可以立即停止進一步的訪問,不會給系統帶來任何危險。
自動初始化只用於成員變數,對方法中的自動變數不起作用。Java規定,任何變數使用之前,必須對變數賦值。由於方法內的自動變數不能進行自動初始化,因此要求程序員顯式地對其賦值。當然可以給變數賦值為null。如果在變數賦值之前使用它,編譯器會指出一條錯誤信息。告知自動變數未被初始化。
注意在Java中null應小寫,和其他語言中的用法不同。