亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

下面這條語句一共創建類多少個對象String s="a"+"b"+"c"+"d";

下面這條語句一共創建類多少個對象String s="a"+"b"+"c"+"d";

高先森_2 2016-03-21 15:26:15
下面這條語句一共創建類多少個對象String?s?=?"a"+"b"+"c"+"d";
查看完整描述

7 回答

已采納
?
克里斯緹娜

TA貢獻1條經驗 獲得超6個贊


就創建了一個?
String s = "a" + "b" + "c" + "d" + "e";?
賦值符號右邊的"a"、"b"、"c"、"d"、"e"都是常量?
對于常量,編譯時就直接存儲它們的字面值而不是它們的引用?
在編譯時就直接講它們連接的結果提取出來變成了"abcde"?
該語句在class文件中就相當于String s = "abcde"?
然后當JVM執行到這一句的時候, 就在String pool里找?
如果沒有這個字符串,就會產生一個

查看完整回答
6 反對 回復 2016-03-21
?
小立

TA貢獻2條經驗 獲得超3個贊

答:對于如下代碼:
String s1 = "a";
String s2 = s1 + "b";
String s3 = "a" + "b";
System.out.println(s2 == "ab");
System.out.println(s3 == "ab");
第一條語句打印的結果為false,第二條語句打印的結果為true,這說明javac編譯可以對字符串常量直接相加的表達式進行優化,不必要等到運行期去進行加法運算處理,而是在編譯時去掉其中的加號,直接將其編譯成一個這些常量相連的結果。
題目中的第一行代碼被編譯器在編譯時優化后,相當于直接定義了一個”abcd”的字符串,所以,上面的代碼應該只創建了一個String對象。寫如下兩行代碼,
?????????? String s = "a" + "b" + "c" + "d";
?????????? System.out.println(s == "abcd");
最終打印的結果應該為true。

查看完整回答
3 反對 回復 2016-03-21
?
Lookiy

TA貢獻4條經驗 獲得超3個贊

就是一個String 同String s = "abcd";

查看完整回答
2 反對 回復 2016-03-21
?
1__1

TA貢獻1條經驗 獲得超1個贊

只創建了一個,因為
String?s="a"+"b"+"c"+"d";
String?s1="abcd";
System.out.println(s==s1);
結果為true,所以s和s1是一個對象,答案也就應該是一個對象
查看完整回答
1 反對 回復 2016-03-22
?
qq___524

TA貢獻171條經驗 獲得超74個贊

"a" ?"b" ?"c" ?"d" ?"abcd"一個五個

查看完整回答
2 反對 回復 2016-03-21
?
woshiajuana

TA貢獻211條經驗 獲得超152個贊

5個~a,b,c,d,s ?

查看完整回答
2 反對 回復 2016-03-21
  • woshiajuana
    woshiajuana
    5個說錯了 7個 "a" "b" "c" "d" "abcd" 還有加號加一次 "ab" "abc" 所以一共7個
?
這位童鞋

TA貢獻2條經驗 獲得超1個贊

實際上不一定,最多七個,最少可能一個都沒有,string維護了一個對象池,只要池里有的,就會返回已經存在的對象。

查看完整回答
1 反對 回復 2016-03-22
  • 7 回答
  • 0 關注
  • 3271 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號