String的兩種初始化方法講解
前言:String的創(chuàng)建和初始化有兩種方法,既可以用String str = new String("abc")創(chuàng)建一個(gè)字符串,也可以用String str = "abc"的形式創(chuàng)建。
1: String str = "abc"創(chuàng)建一個(gè)字符串的過(guò)程
- 首先在常量池(方法區(qū))中查找是否存在內(nèi)容為"abc"的字符串對(duì)象
- 如果不存在則在常量池中創(chuàng)建一個(gè)"abc"的字符串對(duì)象,并讓str引用該對(duì)象
- 如果存在則直接讓str引用該對(duì)象
2: String str = new String("abc")創(chuàng)建一個(gè)字符串的過(guò)程
- 首先定義一個(gè)str的String類型的引用并存放在棧中
- 在字符串常量池中查看是否存在內(nèi)容為"abc"字符串對(duì)象
- 若存在則跳過(guò)這個(gè)步驟,若不存在,則在字符串常量池中創(chuàng)建一個(gè)內(nèi)容為"abc"的字符串對(duì)象。(前三步都是在編譯時(shí)完成的)
- 執(zhí)行new操作,在堆中創(chuàng)建一個(gè)指定的對(duì)象"abc",這里堆的對(duì)象是字符串常量池“abc”對(duì)象的一個(gè)拷貝對(duì)象。
- 讓str指向堆中“abc”這個(gè)對(duì)象(也就是存儲(chǔ)這個(gè)對(duì)象的在堆中的地址)
有時(shí)會(huì)問(wèn) String str = new String("abc")
創(chuàng)建一個(gè)字符串的過(guò)程會(huì)創(chuàng)建幾個(gè)對(duì)象?
答:一個(gè)或兩個(gè)(因?yàn)榫幾g時(shí)會(huì)檢查方法區(qū)常量池中是否已經(jīng)存在需要?jiǎng)?chuàng)建的字符串對(duì)象。若存在直接將引用指向常量池的對(duì)象,此時(shí)只會(huì)在隨后的運(yùn)行時(shí)堆中創(chuàng)建一個(gè)對(duì)象。而如果不存在,會(huì)先在常量池中創(chuàng)建一個(gè)對(duì)象,在隨后的運(yùn)行時(shí)還會(huì)在堆中再創(chuàng)建一個(gè)對(duì)象,所以此時(shí)會(huì)創(chuàng)建兩個(gè)對(duì)象)
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
IntelliJ IDEA中SpringBoot項(xiàng)目通過(guò)devtools實(shí)現(xiàn)熱部署的方法
這篇文章主要介紹了IntelliJ IDEA中SpringBoot項(xiàng)目通過(guò)devtools實(shí)現(xiàn)熱部署的方法,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08圖文詳解JAVA實(shí)現(xiàn)哈夫曼樹(shù)
所謂哈夫曼樹(shù)就是要求最小加權(quán)路徑長(zhǎng)度,這是什么意思呢?簡(jiǎn)而言之,就是要所有的節(jié)點(diǎn)對(duì)應(yīng)的路徑長(zhǎng)度(高度-1)乘以該節(jié)點(diǎn)的權(quán)值,然后保證這些結(jié)果之和最小。下面這篇文章就給大家詳細(xì)介紹2016-08-08Spring @RestController注解組合實(shí)現(xiàn)方法解析
這篇文章主要介紹了Spring @RestController注解組合實(shí)現(xiàn)方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06Spring Boot利用@Async異步調(diào)用:ThreadPoolTaskScheduler線程池的優(yōu)雅關(guān)閉詳解
這篇文章主要給大家介紹了關(guān)于Spring Boot利用@Async異步調(diào)用:ThreadPoolTaskScheduler線程池的優(yōu)雅關(guān)閉的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05SpringBoot實(shí)現(xiàn)數(shù)據(jù)加密脫敏的示例代碼
這篇文章主要為大家學(xué)習(xí)介紹了SpringBoot如何利用注解+反射+AOP實(shí)現(xiàn)數(shù)據(jù)加密脫敏的功能,文中的示例代碼講解詳細(xì),需要的可以參考一下2023-08-08使用IntelliJ IDEA查看類的繼承關(guān)系圖形(圖文詳解)
這篇文章主要介紹了使用IntelliJ IDEA查看類的繼承關(guān)系圖形,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的工作或?qū)W習(xí)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03SpringBoot詳細(xì)講解視圖整合引擎thymeleaf
這篇文章主要分享了Spring Boot整合使用Thymeleaf,Thymeleaf是新一代的Java模板引擎,類似于Velocity、FreeMarker等傳統(tǒng)引擎,關(guān)于其更多相關(guān)內(nèi)容,需要的小伙伴可以參考一下2022-06-06