javastring的初始化
Ⅰ java 字元串的初始化問題
在java中,String使用直接賦值的方式後,只要聲明的字元串內容相同,就不中毀侍會開辟新的內存空間,如s1和s2都指向同一個地址空間;而你賣吵上面用new的方式構造一個對象會開辟新的內存空間。String類「==」比較的是地址,而equals()比較的事字元串的內容一不一樣。余歲
Ⅱ java String數組初始化問題
並不是出亂碼了,是你把r加入進去了,r是一個String數組,無法直接轉換為String
最後的那句 sb.append(r.toString()); 沒有必要,刪除就可以了
Ⅲ JAVA中一個類包含String數組怎麼初始化的
不可以滴!!
因為在B中,如果沒有了帶*的那一行,那麼僅僅只是代表 有存在一個存放A類型數組:as[i],但是裡面每個元素到底存放什麼我們是不知道的,在JAVA裡面,就是引用為空的意思,既as[i] = null。就是說裡面其實是沒有任何東西的,僅僅只有一個定義而已,那怎麼可以指向A類裡面的a屬性呢?因為as[i]指向的東西都為空,空就是代表沒有任何東西,那麼裡面自然也不會有a這個屬性咯。所以我們在聲明完數組的時候,必須把數組裡面的元素也申明了。但是為什麼C可以呢。
你看C是這樣做的:
C先聲明了一個數組,所以只要存在C的實例,就可以使用到這個數組。雖然這時候,數組裡面的元素是為空的,但是你在主程序裡面使用了c.s[1]="3",意思就是為c實例裡面的數組的第2個元素給申明了,而不是直接引用,這與B是不同的。
——————————————————————————————————————————————————————
B-->不為空,所以可以使用B裡面的元素,既as數組,但是as數組裡面的元素是空的,所以不存在裡面有某種屬性的說法,自然是不可是使用A類裡面的元素a咯。
C--》不為空,所以可以使用C裡面的元素s數組,然後對s數組進行操作。
祝你好運!!希望你能夠理解
Ⅳ java String 初始化 是 null 還是 「」 他們的區別
你在創建的時候,沒有初始化時或賦值時,列印出的是null
因為String類型是一個對象,而不像int之類是基本類型有初始默認值
如果在初始時賦值「」(空值),那也算創建對象了(就是相當於new 操作)
列印出的為「」(空值)
Ⅳ java String 初始化 是 null 還是 「」 他們的區別
String str1 = null; str引用為空
String str2 = ""; str引用一個空串
也就是null沒有分配空間,""分配了空間,因此str1還不是一個實例化的對象,而str2已經實例化。
注意因為null不是對象,""是對象。所以比較的時候必須是 if(str1==null){...}和if(str2.equals("")){...}。
對象用equals比較,null用等號比較。因此,如果str1=null;下面的寫法錯誤:
if(str1.equals("")||str1==null){//如果str1沒有值,則....
//。。。。
}
正確的寫法是 if(str1==null||str1.equals("")){ //先判斷是不是對象,如果是,再判斷是不是空字元串
//...
}
打個比方:一個空玻璃杯,你不能說它裡面什麼都沒有,因為裡面有空氣,當然也可以把它弄成真空,null與" "的區別就象真空與空氣一樣。
Ⅵ java中為什麼字元串要初始化
字元串初始化,實際上是為了進行內存存儲和地址引用。
如:String str = new String("ABC");這個就是在內存中創建一個位孝扒置來存儲「ABC」,之後在通消慎團過地址引用,賦值給「str」,如果不初始化的話,就沒有進行存儲,也就無從談起引用。
備註:拿橘String str = 「ABC」;結果和之前的「String str = new String("ABC");」是一樣的,「ABC」創建過程實際上就是一個初始化過程,所以沒必要糾結在這塊,會用即可。不同的是每次new都創建一個存儲空間來存儲,而賦值(「ABC」)的形式,如果之前存在就直接引用,不存在才會創建。
Ⅶ java String 初始化 是 null 還是 「」 他們的區別
String a="";
String a1=null;
第一個有值,固定的。
第二個是null,值在下面可以改變。
另一方面,null在堆內存沒東西,此時的字元串指針指向的是一個未知的地方,
而""在堆內存有東西,只不過位空,此時字元串指針就指向了字元a所在的存儲單元。
Ⅷ java字元串初始化
1、直接賦值首先會看緩沖區是否已有aaaa這個字元串對象,如有就直接賦值,不新建對象,沒有則創建新對象並將此對象放進緩存區。
2、首先會創建一個沒有名字(可能系統有默認的名字)的aaaa對象,然後new關鍵字會再創建一個空字元串對象,然後將aaaa地址指向new的對象,最後自動回收無名對象。
Ⅸ java中String類型一定需要初始化嗎
如果後面有
賦值語句
,那麼就不需要初始化,如果沒有賦值語句,需要初始化,測試代碼如下:
class
test
{
public
static
void
main(String[]
args)
{
String
s;
//System.out.println(s);
s="Hello";
System.out.println(s);
}
}
如果把注釋部分的注釋符號去掉,則會出現s未初始化的錯誤提示
Ⅹ Java局部變數初始化,String類型為什麼不用初始化就能使用
局部變數String需要初始化!
以下代碼:
public class Test {
public static void main(String[] args) {
String s;
System.out.println(s);
}
}
這個代碼直接報錯,無法編譯
你上面的代碼沒錯是因為你在while循環里對s進行了初始化