我不明白Java中空字符串與空字符串之間的區別。Java字符串:null與空的區別
假設String a = null
,我想通過使用a.isEmpty()
或a.equals("null")
來查看a是否爲空。這些都不起作用。我必須使用a == null
來判斷是否是null
。
從我的理解來看,如果在兩個字符串之間使用==
,實際上是在比較它們在內存中的地址或引用?這種理解是正確的嗎?我希望有人能澄清我的困惑。提前致謝。
我不明白Java中空字符串與空字符串之間的區別。Java字符串:null與空的區別
假設String a = null
,我想通過使用a.isEmpty()
或a.equals("null")
來查看a是否爲空。這些都不起作用。我必須使用a == null
來判斷是否是null
。
從我的理解來看,如果在兩個字符串之間使用==
,實際上是在比較它們在內存中的地址或引用?這種理解是正確的嗎?我希望有人能澄清我的困惑。提前致謝。
空==>沒有引用(沒有字符串引用)
「」 ==>有一個指向字符串的引用(這恰好是空的)
你是正確的:==
測試兩個字符串是否實際上是對同一個String
對象的引用。
一個空的String
對象正是它在錫上所說的,而null
指的是沒有任何對象引用。使用空字符串,您可以調用所有String
方法,並且一般將其與其他String
一樣對待 - 但使用null
時,沒有對象調用方法,因此您得到NullPointerException
。
NullPointerException正是我在運行代碼時所得到的結果。這個異常沒有消失,直到我檢查== null。感謝所有的答覆!將檢查重複的線程。 – TonyGW
你總是使用==
當檢查任何null
參考。您不能使用Object#equals()
,因爲如果您沒有實例,則無法調用實例方法,並且null
具體表示「沒有實例!」
值得注意的是,你可以傳遞一個空引用equals(),因爲通過約定它應該能夠處理null(評估它爲false)。 – Surveon
此:
a.equals("null")
字符串 「空」 的〜應變比較。
null
是Java中的保留關鍵字,表示該變量不引用任何內容。
a.isEmpty()
檢查字符串是否沒有字符。即它等於""
。
空字符串的字面意思就是「」,而null是對無的引用。因此,任何null的東西都沒有被實例化,但是存在的東西是存在的,但不包含任何值。
在Java中記住的事情是String是一個對象,而不是像int或double這樣的原始數據類型。 「==」只比較不是對象引用的值之間的等價關係,因此對於需要使用.equals的字符串和其他對象。
String
是內存中的String對象的引用變量。如果String
爲空,則表示它不引用任何String對象。
在a.equals("null");
您正在比較內存中的字符串對象的值與字面值「null」。要檢查一個String變量是否爲空(表示不引用內存中的String對象),請使用a == null
。
value == null測試對象引用以查看它是否爲null。如果它爲空,則不能像equals或isEmpty那樣訪問對象屬性,因爲參考指向無。最好的選擇是首先檢查null以避免產生NullPointerException的可能性 – MadProgrammer
看到重複,但isEmpty與長度爲0的字符串相同,null表示根本沒有字符串 –
關閉主題,但爲什麼人們回答對這個問題,因爲它已被問及,正確的答案,並正確地確定爲重複? – njzk2