String類型的null,String(),String("");之間有什么區(qū)別?
String?s; String?s1=null; String?s2=new?String(); String?s3=new?String("");
比如說定義的這四個(gè)變量之間有什么不同?
String?s; String?s1=null; String?s2=new?String(); String?s3=new?String("");
比如說定義的這四個(gè)變量之間有什么不同?
2017-03-29
舉報(bào)
2017-03-30
當(dāng)聲明為String??s1時(shí);
聲明一個(gè)字符串對(duì)象,分配了一個(gè)內(nèi)存空間,沒有進(jìn)行初始化,沒有存入任何對(duì)象。
當(dāng)聲明為String??s2?=?null時(shí);
聲明一個(gè)字符串對(duì)象,分配了一個(gè)內(nèi)存空間,進(jìn)行初始化,存入了一個(gè)空對(duì)象,值為空。
當(dāng)聲明為String??s3?=?new??String 時(shí);
聲明一個(gè)字符串對(duì)象,分配了一個(gè)內(nèi)存空間,沒有進(jìn)行初始化,是在堆中創(chuàng)建一個(gè)字符串對(duì)象,
并把引用放在棧中指向他的首地址。
當(dāng)聲明為String??s4?=?new??String("" )?時(shí);
聲明一個(gè)字符串對(duì)象,分配了一個(gè)內(nèi)存空間,初始化,存了一個(gè)字符串對(duì)象
是在堆中創(chuàng)建一個(gè)字符串對(duì)象,并把引用放在棧中指向他的首地址。
2017-03-30
String s ;該語(yǔ)句表示只是聲明了一個(gè)引用變量,但是并沒有初始化引用,所以對(duì)變量s的任何操作(除了初始化賦值外) 都將引發(fā)異常.
String s=null; 表示未申請(qǐng)任何內(nèi)存資源,即些語(yǔ)句表示聲明了一個(gè)引用變量并初始化引用,但是該引用沒有指向任何對(duì)象.但可以把它作為參數(shù)傳遞或其它使用,但是不能調(diào)用它作為對(duì)象的方法