String s="a"+"b"+"c"+"e" 總共建立了幾個物件?
問:String s="a"+"b"+"c"+"e" 總共建立了幾個物件 ?
答案:1個
當我看到這個問題的時候,我的答案是錯的,當我查閱資料後最終確認答案是1個。然後經過了大量的測試,最終答案是1個物件。
測試:
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。
String a=new String("xyz");
例如這種形式建立一個String物件,最有代表性講解String物件的建立過程。
答案是:建立兩個或者1個物件。
當JVM虛擬機器看到abc的時候,會去字串常量池尋找有沒有這個字串,如果沒有則建立儲存在常量池中,如果有則直接用即可。兩個或一個,”xyz”對應一個物件,這個物件放在字串常量緩衝區,常量”xyz”不管出現多少遍,都是緩衝區中的那一個。New String 每寫一遍,就建立一個新的物件,它依據那個常量”xyz”物件的內容來創建出一個新 String 物件。如果以前就用過’xyz’,這句代表就不會建立”xyz”自己了,直接從緩衝區拿。
象,最有代表性講解String物件的建立過程。
當JVM虛擬機器看到abc的時候,會去字串常量池尋找有沒有這個字串,如果沒有則建立儲存在常量池中,如果有則直接用即可,就不會重新建立了。
相關推薦
String s="a"+"b"+"c"+"e" 總共建立了幾個物件?
問:String s="a"+"b"+"c"+"e" 總共建立了幾個物件 ? 答案:1個 當我看到這個問題的時候,我的答案是錯的,當我查閱資料後最終確認答案是1個。然後經過了大量的測試,最終答案
String s = "a"+"b"+"c"+"d"共建立了多少個物件?
String s1 = "a"; String s2 = s1+"b"; String s3 = "a"+"b"; System.out.println(s2=="ab"); System.out.println(s3=="ab"); 輸出結果為fals
String str = "a"+"b"+"c"+"d";一共建立了幾個物件?
前一段時間我參加了我們學校的招聘會,然後有個面試人員就問了我String str = "a"+"b"+"c"+"d"共建立了幾個物件。平時我知道String型別的字串可以疊加,但這個底層原理卻有些模糊。當時就想這是字串的疊加啊,肯定只建立了一個物件。信心滿滿的
java中字串基本知識 String s=new String("abc")建立了幾個物件?
本文轉載自http://www.cnblogs.com/ydpvictor/archive/2012/09/09/2677260.html String s=new String("abc")建立了幾個物件? String str=new String("abc"); &nb
String s=new String("abc")建立了幾個物件?
String str=new String("abc"); 緊接著這段程式碼之後的往往是這個問題,那就是這行程式碼究竟建立了幾個String物件呢? 相信大家對這道題並不陌生,答案也是眾所周知的,2個。 接下來我們就從這道題展開,一起回顧一下與建立String物件
Java:String s=new String("abc")建立了幾個物件?
String str=new String("abc"); 緊接著這段程式碼之後的往往是這個問題,那就是這行程式碼究竟建立了幾個String物件呢? 相信大家對這道題並不陌生,答案也是眾所周知的,2個。 接下來我們就從這道題展開,一起回顧一下與建立String物件相關的一
String s =new String()分析堆與棧 建立了幾個物件
轉載自 分享最終編輯 tanzhimei393先定義S String str1 = “abc”; System.out.println(str1 == “abc”); 步驟: 1) 棧中開闢一塊空間存放引用str1, 2) String池中開
String str = new String("abc")究竟建立了幾個物件?
先給出答案:兩個。(如果原來常量池中沒有"abc") String是一個特殊的包裝類資料。即可以用String str = new String("abc");的形式來建立,也可以用String str = "abc";的形式來建立 String str = "abc"建立
String str = new String("abc")究竟建立了幾個物件?
先給出答案:兩個。(如果原來常量池中沒有"abc") String是一個特殊的包裝類資料。即可以用String str = new String("abc");的形式來建立,也可以用String str = "abc";的形式來建立 String str = "abc
new String(“abc”)建立了幾個物件
String a = “abc”; String b = new String("abc"); 這兩種宣告方法得到的String是不一樣的,第一種宣告方法得到的String是儲存在String常量池裡面的,而第二種方式的宣告很明顯是正常的建立一個物件的使用方法,所以儲存在
new String建立了幾個物件
String str = new String(“abc”) 到底建立了幾個物件? 首先String str是定義了一個字串變數,並未產生物件,=不產生物件,那麼只有後面的new String("abc")了。把它拆分成"abc"和new String(),首先在字串常量
Java學習筆記 (十三) String究竟建立了幾個物件 以及String的intern方法
String究竟建立了幾個物件 看程式碼: 例 1、 public static void main(String[] args) { String s3 = "天道酬勤"; String s4 =new
面試題之String str = new String("abc"); 建立了幾個物件
今天去面試的時候碰到了這個問題:String str = new String("abc"); 建立了幾個物件,回來自己研究並查閱資料才發現答錯了。。 網上的爭論不少,有的說是兩個,答案應該是:兩個或一個 理由解釋如下: 都瞭解java 的字串常量緩衝區(字串池,字串常量池
深入 -- 雙引號字串加號(+)拼接 建立了幾個物件?
雙引號字串加號(+)拼接 建立了幾個物件?結論先行:雙引號字串 加號(+) 拼接,不論多少,只建立了一個物件。昨天看到一個題目,挺有意思的。大意是:String a = "1"+"2"+"3"+"4";建立了幾個物件??我當時第一反應是1個物件。為什麼呢?因為 雙引號字串 直
別再問我 new 字串建立了幾個物件了!我來證明給你看!
我想所有 Java 程式設計師都曾被這個 new String 的問題困擾過,這是一道高頻的 Java 面試題,但可惜的是網上眾說紛紜,竟然找不到標準的答案。有人說建立了 1 個物件,也有人說建立了 2 個物件,還有人說可能建立了 1 個或 2 個物件,但誰都沒有拿出幹掉對方的證據,這就讓我們這幫吃瓜群眾們陷
下面這條語句一共建立了多少個物件:String s="a"+"b"+"c"+"d";
最近看到許多類似的帖子,大致意思如下: 問題1: String s = “a” + “b” + “c” + “d” + “e”; 問此語句共建立了幾個物件? 答:就建立了一個 解析:String s = “a” + “b” + “c” + “d” + “e”; 賦值符號右邊的"a"
2016ACM/ICPC亞洲區瀋陽站 - A/B/C/E/G/H/I - (Undone)
連結:傳送門 A - Thickest Burger - [簽到水題] ACM ICPC is launching a thick burger. The thickness (or the height) of a piece of club steak is A (1 ≤ A ≤ 100). Th
流水線之1個乘法器實現S=a*b*c*d(指兩個暫存器之間只有一個乘法器)
module cy4(input[3:0] a,b,c,d, input vld_in,//輸入有效指示訊號 input clk,rst_n, output reg[15:0] dout, output re
869】 A B C E 【組合數打表】
A The Artful Expedient Rock… Paper! After Karen have found the deterministic winning (losing?) strategy for rock-paper-scissors,
Codeforces Round #319 (Div. 2)(A,B,C,E)
Codeforces Round #319 (Div. 2) A.Multiplication Table 題意: 求m在n*n的加法表中出現了幾次 思路: 列舉1到n,累計能整除m的情況。 程式碼: /* * @aut