我們知道,在Java中創(chuàng)建字符串(對象)常見有多種方式:
1、Java字面量
"Java字符串"
2、直接定義字符串常量
Stringstr="Java字符串";
3、通過實例化String類來創(chuàng)建字符串對象
Stringstr=newString("Java字符串");
而Java中的String字符串是可以直接當成對象來操作的,這是什么原理呢?
Java中的字符串本質(zhì)上都是字符串對象
像以上
1、字符串字面量、字符串常量池
Java中的字符串字面量就是一對用雙引號括起來的字符串,比如:“中國人”。
字符串常量是永生代,通俗的說就是常量池,當遇到Stringstr="字符串"時,編譯器會在永生代中檢查是否存在這個常量的引用,若存在則直接把地址賦給棧;若不存在則先在永生代中開辟內(nèi)存空間,然后把地址賦給棧指針。
也就是說,字符串常量池中存放的依舊是字符串對象的引用。
2、實例化字符串對象
這種方式會根據(jù)String對象再次創(chuàng)建一個String對象,從堆內(nèi)存中new一塊新內(nèi)存后將指針賦給棧指針。
綜上,無論是哪種方式創(chuàng)建的字符串,其本質(zhì)依舊是字符串對象,所以在Java中字符串可以當成對象來管理。
以上就是我的觀點,對于這個問題大家是怎么看待的呢?歡迎在下方評論區(qū)交流~我是科技領域創(chuàng)作者,十年互聯(lián)網(wǎng)從業(yè)經(jīng)驗,我了解更多科技知識!