① java中null!=對象 和 對象!=null的區別
沒有區別,用null == 對象名更好的原因是如果誤寫成null = 對象名在編譯階段就會報錯,而如果將對象名 == null誤寫成對象名 = null很有可能是不會報錯的。
② null是不是對象(java)
Object
o
=
null;只是定義了一個object類的值為空引用
並沒有初始化
所以在內存中不指向任何對象。
Object
obj
=
new
Object();這時候初始化
obj才指向堆內存中值為空(null)的對象
這么說明白嗎?
③ java中new一個對象和對象=null有什麼區別
這個不是有什麼區別的問題
而是這兩個東西就不是可以混淆的事情。
new一個對象,代表創建了這個對象,在內存中開辟了一塊空間。而
對象=null表示把對象設為null
④ java null 和空的區別
一般情況下 . java中的null就是指的空 .
但是稍微注意的是 空字元串"" 和null是有區別的
"" 代表有字元串, 但是字元串內容為空, 長度為0
null表示對象為空
如果用為null的對象去調用方法, 就會出現空指針異常
所以 在字元串進行內容比較時 ,要 使用不為空的字元串 去調用比較方法,
參考代碼如下
publicclassTest{
publicstaticvoidmain(String[]args){
Stringstr1=null;
Stringstr2="";
System.out.println(str1==str2);//false
System.out.println(str2.equals(str1));//false
System.out.println(str1.equals(str2));//空指針異常java.lang.NullPointerException
}
}
⑤ 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
結果就是上面這樣出來的。
⑥ 哪位能解釋一下JAVA中的 null, 並且對象、String等等,都可以賦值為null
先說下null,在Java裡面,包括C++,C#,都是指的一個空的內存地址,
我想你應該也知道,在Java裡面String也是對象,而對象和基本數據類型的區別就是對象裡面存放的是一個內存地址,基本數據類型裡面存放的是一個確切的值
這樣你明白為什麼能把null賦給對象和String了吧。其實,你如果了解C裡面的指針,你就能很輕松的弄明白這些問題。
⑦ java里,判斷一個對象是否是null,怎麼判斷
boolean b = null instanceof Object;
java中的類都是Object的子類,如果不是null的話上面的句子肯定是true
不過誰要這么寫肯定會被boss罵
⑧ 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垃圾回收機制去回收。