原文:String s="a"+"b"+"c"+"d";創建了幾個對象?

對於如下代碼: 第一條語句打印的結果為false,第二條語句打印的結果為true, 說明javac編譯可以對字符串常量直接相加的表達式進行優化,不必要等到運行期再去進行加法運算處理,而是在編譯時去掉其中的加號,直接將其編譯成一個這些常量相連的結果。 題目中的代碼被編譯器在編譯時優化后,相當於直接定義了一個 abcd 的字符串,所以,題目答案應該只創建了一個String對象。 程序最后一條打印語句的 ...

2018-07-27 10:48 7 1997 推薦指數:

查看詳情

String s="a"+"b"+"c",到底創建了幾個對象

首先看一下這道常見的面試題,下面代碼中,會創建幾個字符串對象? 如果你比較一下Java源代碼和反編譯后的字節碼文件,就可以直觀的看到答案,只創建了一個String對象。 估計大家會有疑問了,為什么源代碼中字符串拼接的操作,在編譯完成后會消失,直接呈現為一個拼接后的完整字符串呢? 這是 ...

Mon Aug 16 17:57:00 CST 2021 0 602
String s=new String("abc")創建了幾個對象?

String str=new String("abc"); 緊接着這段代碼之后的往往是這個問題,那就是這行代碼究竟創建了幾個String對象呢? 答案應該是1個或者2個。 1個的情況:如果字符串池中已經存在了"abc"這個對象,那么直接在創建一個對象放入堆中,返回str引用。 2個的情況 ...

Tue Jan 09 17:13:00 CST 2018 0 4385
String s=new String("abc")創建了幾個對象?

轉載自:http://www.cnblogs.com/ydpvictor/archive/2012/09/09/2677260.html String str=new String("abc"); 緊接着這段代碼之后的往往是這個問題,那就是這行代碼究竟創建了幾個String對象呢? 相信 ...

Mon Apr 15 20:47:00 CST 2013 2 3417
String s=new String("abc")創建了幾個對象?

String str=new String("abc"); 緊接着這段代碼之后的往往是這個問題,那就是這行代碼究竟創建了幾個String對象呢? 相信大家對這道題並不陌生,答案也是眾所周知的,2個。 接下來我們就從這道題展開,一起回顧一下與創建String對象相關的一些JAVA知識 ...

Sun Sep 09 17:43:00 CST 2012 19 98302
String s=new String("abc")創建了幾個對象?

String str=new String("abc"); 緊接着這段代碼之后的往往是這個問題,那就是這行代碼究竟創建了幾個String對象呢? 相信大家對這道題並不陌生,答案也是眾所周知的,2個。 接下來我們就從這道題展開,一起回顧一下與創建 ...

Sun Jan 05 06:27:00 CST 2020 0 783
String s = new String("aa") 創建了幾個對象

1 最近幾個同學面試的時候出現了這樣一個問題   剛聽到這個題目的時候的確是不知所措: 經過網上的查找和自己的理解來解釋一下這個題目的答案 答案是:2 為什么呢??? 1 實現我們都知道創建實例有兩種方法   (1)一是用new來創建   (2)二是同過放射實例來創建 ...

Tue Dec 22 22:53:00 CST 2015 2 3932
new String("123") 創建了幾個對象

String 對象可謂再熟悉不過了,與此相關的面試題經常會引出內存性能優化的問題,本篇主要以 new String("123") 創建了幾個對象為例記錄。 一、你能回答正確嗎 如上定義的為常量; 如上 b 為變量,為啥? 難道常量拼接常量得到的是變量 ...

Fri Jun 28 06:40:00 CST 2019 2 1711
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM