String s a b c 建立了幾個物件

2025-06-10 17:50:34 字數 6132 閱讀 6371

1樓:辜芬鮮淑穆

答案是。就建立了乙個。

stringsa"

b"c"賦值臘叢符號右邊的"a"、"b"、"c"都是常量。

對於常量,編譯時就直輪困櫻接儲存它們的字面值而不是它們的引用。

在編譯時就直接講它們連線的結果提取出來變成了尺知"abc"

該語句在class檔案中就相當於stringsabc"

然後當jvm執行到這一句的時候,就在stringpool裡找。

如果沒有這個字串。

就會產生乙個。

2樓:鈄松區學海

就建立了乙個。

賦值符號右邊的"a"、"b"、"c"、"d"、"e"都是常量。

對於常量,編譯時就直接儲存它們的字面值而不是它們的引用。

在編譯時就直接講它們連線的結果提取出來變成了"abc"

該語句輪做在class檔案中就相當於stringsabc"臘譽衡。

然後當jvm執行虛核到這一句的時候,就在stringpool裡找。

如果沒有這個字串,就會產生乙個。

3樓:公義忻和璧

乙個;個人理解為它相當於字串叢絕亮合併成乙個字串相當於(string

s1=abc");

如下例子看到它hashcode碼值一樣的。

public

classt

static

string

s=巨集乎a"+"b"滲寬+"c";

static

string

s1=abc";

public

static

voidmain(string

args){

4樓:牟彥臺和

我用下塌粗麵的**為你解釋,我是利用debug模式去看這三個string的value的id:

**如下:stringsa"

b"c";string

s1abc";

stringxab";

string

s2x+"c";

debug的結果如下:sabc"

id=44)count

hashoffset

valueid=50)

abcs1abc"id=44)count

hashoffset

valueid=50)

abcxab"id=52)count

hashoffset

valueid=53)

s2abc"

id=59)count

hashoffset

valueid=60)

其中:s和s1的value的id都為的value的id為53,s2的value的id為60

說明了,s和s1是同乙個物件,而s2的value雖然和s,s1一樣團知鎮,但是在記憶體中位址不一樣。因此,s2是new出來的物件猛櫻。

由此完全可以確定string

s="a"+"b"+"c"和string

sabc」是同乙個道理。

只有乙個物件。

5樓:網友

string s="a"+"b"+"c"建立了0個或1個物件。

以string s = abc"這種形式建立的字串語句是儲存在常量池中的,所以該語句賦值符號右邊的"a"、"b"、"c""都是常量。

如果常量池中有相應的字串則不建立新的字串物件,即不重新在常量池中分配空間。因此,如果之前以上述形式建立過"abc"這個字串,該語句不會再建立物件。

而是直接把結果提出來後就會變成了"abc"。否則,就在常量池中建立乙個"abc"的字串物件,因此該語句是建立了0個或1個物件。

6樓:網友

一共五個,其中四個是臨時變數很快就被會垃圾**。

string s 是物件名,但它並不真正分配位址,只分配了引用,引用(相當於指標指向,在記憶體中只是乙個數字,指向「五」的位置) ,所以s只是名字而己,並不具備真實的記憶體分配。 就好像,乙個人己經存在,名字只是名字,不是人本身:

舉個例子,現在有a,b,c 三個人。

我們至少得為a,b,c三個人分配記憶體空間來存放這三個物件,這是沒有疑問的。

現在 a和b 想聯合起來成立乙個班集體, 所以我們需要修建乙個新的記憶體(班集體)來定義這兩個人的存在。

然後c決定建立乙個更大的集體,把a,b都召進來,所以記憶體中需要開創一塊更大的記憶體來能同時存下這三個人。

最後,這個最大的集體生成後,我們需要給它取個好聽的名字, 就叫s吧。

但s只是乙個名字, 沒有必要給他分配一間教室。

最後,bs一下那些叫乙個的同學,哈哈,怎麼也不可能是乙個物件,哈。

你說四個的話還有可能靠邊了。

7樓:網友

乙個;個人理解為它相當於字串合併成乙個字串相當於(string s1= "abc");

如下例子看到它hashcode碼值一樣的。

public class t

8樓:網友

就建立了乙個。

賦值符號右邊的"a"、"b"、"c"、"d"、"e"都是常量對於常量,編譯時就直接儲存它們的字面值而不是它們的引用在編譯時就直接講它們連線的結果提取出來變成了"abc"

該語句在class檔案中就相當於string s = abc"

然後當jvm執行到這一句的時候, 就在string pool裡找如果沒有這個字串,就會產生乙個。

9樓:網友

我用下面的**為你解釋,我是利用debug模式去看這三個string的value的id:

**如下:string s = a" +b" +c";

string s1 = abc";

string x = ab";

string s2 = x+"c";

debug的結果如下:

s "abc" (id=44)

count 3

hash 0

offset 0

value (id=50)

0] a1] b

2] cs1 "abc" (id=44)

count 3

hash 0

offset 0

value (id=50)

0] a1] b

2] cx "ab" (id=52)

count 2

hash 0

offset 0

value (id=53)

s2 "abc" (id=59)

count 3

hash 0

offset 0

value (id=60)

其中:s和s1的value的id都為的value的id為53,s2的value的id為60

說明了,s和s1是同乙個物件,而s2的value雖然和s,s1一樣,但是在記憶體中位址不一樣。因此,s2是new出來的物件。

由此完全可以確定string s="a"+"b"+"c"和string s = abc」是同乙個道理。

只有乙個物件。

10樓:網友

答案是 就建立了乙個。

string s = a" +b" +c" ;

賦值符號右邊的"a"、"b"、"c"都是常量對於常量,編譯時就直接儲存它們的字面值而不是它們的引用在編譯時就直接講它們連線的結果提取出來變成了"abc"

該語句在class檔案中就相當於string s = abc"

然後當jvm執行到這一句的時候, 就在string pool裡找如果沒有這個字串,就會產生乙個。

11樓:網友

你這個滿意的答案顯然是錯的。學習過編譯原理就知道了。a b c 都是常量,在編譯的時候就給優化為乙個常量abc了。

12樓:蕭曼

string s這種寫法不就是乙個嗎。

string a="a"; string b="b"; a=a+b; 這裡共建立了幾個物件?

13樓:網友

兩個或三個物件。前兩句建立兩個物件沒有疑問,最後一句,如果"ab"字串在之前已經使用過,那麼會直接在記憶體池中使用,不建立新物件;如果沒有使用過,則建立;

14樓:網友

兩個,string類是自動生成物件的,分別就是a和b

a=a+b只是賦值,並沒有生成物件。

15樓:我的天and神啊

三個,string a 建立了乙個,string b建立了乙個, a = a+b;改變了a的值 ,並生成了乙個 a+b的物件。

16樓:網友

三個,string a="a" string b="b" 在字串池中建立了兩個物件乙個是a 乙個是b 而a=a+b則是直接在對內重新new了乙個物件 位"ab"; 你要知道,直接string定義乙個新物件是 例如string a ="a" 它的過程是 先在字串池中找有沒有相同的物件 找不到就建立乙個,如果(我說如果)你在string a 之後又string b="a" 那麼不會建立乙個新的物件 而只是將b指向a而已;而a=a+b的話,你是改變的a的內容不管你有沒有一樣的,他就直接在堆內new乙個string a=new string ("ab")

不知我的解說和你胃口否?

string s = new string("xyz"); 時候建立了幾個物件?

17樓:大雁南飛

string s=new string("xyz")究竟物件個數分為兩種情況:

1.如果string常理池中,已經建立"xyz",則不會繼續建立,此時只建立了乙個物件new string("xyz");

2.如果string常理池中,沒有建立"xyz",則會建立兩個物件,乙個物件的值是"xyz",乙個物件new string("xyz")。

18樓:沒有響應

差不多就這意思。

建立了乙個xyz字串物件和乙個 string物件。

19樓:網友

沒有你所說的常量池吧,常量要加final的,那你這麼說的話。

string s="xyz";

string s1="xyz";

那麼s==s1是為真了 ,我認為你那樣理解不是很真確。

以下j**a**為什麼只建立了乙個物件? string s1="bc"; string s2="bc";

20樓:芝麻拆門

因為他們的內容是一樣的,首先string物件的建立都是放入常量池裡面的。然後為了節約記憶體的開闢,它在建立的時候會去找這個常量池,如果有這個內容相同的物件需要建立的時候,它會直接把位址指向這塊記憶體,所以只有乙個例項。希望能幫到你!

21樓:啊郎遠去

前者與後者是兩種不同的構建方式。

前者 是把 「bc」放在 乙個常量池中 當string s1="bc" 時 s1的位址指向 存放"bc"的位址。

這時 s2進來了 他會到常量池中 找有沒有"bc"有就指向 "bc"沒有就重新開闢乙個位址。

後者 是先為 s1 s2 開闢乙個空間 然後再再次基礎上開闢 你一塊位址空間 存放各自的"bc"

string s = new string("xyz");建立了幾個string object? 二者之間有什麼區別?

22樓:阿仁

建立了兩個物件,先建立的物件儲存在常量池中,即。class檔案中,在編譯時就已經確定。

new string物件的時候,又建立了乙個物件儲存在記憶體中,在執行時確定。

string s = new string("xyz"); //先常量池再記憶體。

string s1="xyz"; //常量池。

/false

ps:==用來判斷是否引用同一物件,s和s1位於不同環境中,自然不是引用同一物件。

23樓:夢冷凝

兩個或乙個,」xyz」對應乙個物件,這個物件放在字串常量緩衝區,常量」xyz」不管出現多少遍,都是緩衝區中的那乙個。new string每寫一遍,就建立乙個新的物件,它一句那個常量」xyz」物件的內容來建立出乙個新string物件。如果以前就用過』xyz』,這句代表就不會建立」xyz」自己了,直接從緩衝區拿。

我建立了群,要寫群介紹怎麼寫呢,我建立了一個群,要寫群介紹怎麼寫呢!

看你那個群 主要是建立做什麼 比如是娛樂交友 還是做什麼的呢 能不能理解呢 我創了一個聊天群,不知道怎麼寫群介紹請大家幫我想一下,謝謝大家了 你就寫創介個群的用處,每個群的用處都不同的,若是你這個群只是純聊天話,你可以一行一句話的寫看起來也比較美觀,雖然大家來自不同的地方,可是遇到了一起,既然遇見了...

我剛建立了群,人不是很多,怎樣拉人

想拉bai真實的人是一個 長期的過程,想du拉假zhi人的找莪,十分鐘拉滿一個dao裙,唯一的版缺點就是隻能待裡面湊權數不能說話。生命只有一次,而人生也不過是時間的累積。我若讓今天的時光白白流逝,就等於毀掉入生最後一頁。因此,我珍惜今天的 分一秒,因為它們將一去不復返。我無法把今天存入銀行,明天再來...

為什麼明明建立了servlet,跳轉時卻出現404找不到呢

出現404的幾種情況copy 1.輸入的地址有誤 bai應用名大小du寫不正確,名稱拼寫不正確 zhi 2.在web.xml檔案中和 頁面跳轉servlet,為什麼就是包404,找不到,大神請指教 你的專案路徑是demoweb嗎?如果是,你可以嘗試如下修改 form裡面的action值 demowe...