Java | 空字符串和null

空字符串

  • 類型: "" 是一個(gè)空字符串,長(zhǎng)度為0,在內(nèi)存中分配一個(gè)空間,可以使用 Object 對(duì)象中的方法。例如"".toString()
  • 內(nèi)存分配Stirng str = "":表明聲明一個(gè)字符串類型的引用,其值""為空字符串,這個(gè) str 引用指向的是空字符串 "" 的內(nèi)存空間

null

  • 類型:null 表明一個(gè)對(duì)象的值,不是一個(gè)字符串,并沒有分配內(nèi)存,比如String str = null
  • 內(nèi)存分配String str = null:表明聲明一個(gè)字符串對(duì)象的引用,但其指向一個(gè)null,也就是說沒有指向任何內(nèi)存空間
String str1 = ""     // str對(duì)應(yīng)一個(gè)空串,聲明對(duì)象的引用
String str2 = null   // str2引用為空
String str3 = new String()      //str3指向具體的String實(shí)例, 默認(rèn)為""

**注意**:str1和str3都被實(shí)例化,都指向了內(nèi)存中的空間,雖然str1和str2指向的地址不一樣,但是值是一樣的,都是"",而str2沒有被實(shí)例化


比較

由于 null 不是對(duì)象,"" 是對(duì)象,所以比較的方式是

str1.equals("")     //對(duì)象用equals方法來比較
str2 == null        //null用==來比較


總結(jié)

  1. Java中有兩種比較大小的方式:==equals方法,前者是根據(jù)地址來比較,只有地址和值都相等,則兩者才相等;后者則是根據(jù)變量的值比較大小,只要值相等,兩者便相等。
  2. 在Java中變量和變量引用都是存在棧 (stack) 中,而對(duì)象 (new出來的)都是存放在堆 (heap) 中的,例如:
    String a = new Stirng("ABC") //a存放在棧中,而ABC這個(gè)值存放在堆中,a指向ABC在堆中的地址
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容