色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

在java中為什么String字符串可以作為對象來管理?

傅智翔2年前16瀏覽0評論

我們知道,在Java中創(chuàng)建字符串(對象)常見有多種方式:

1、Java字面量

"Java字符串"

2、直接定義字符串常量

Stringstr="Java字符串";

3、通過實例化String類來創(chuàng)建字符串對象

Stringstr=newString("Java字符串");

而Java中的String字符串是可以直接當成對象來操作的,這是什么原理呢?

Java中的字符串本質(zhì)上都是字符串對象

像以上定義“字符串”的方式其實在Java虛擬機中都是生成了字符串對象,只不過這些字符串對象在內(nèi)存中的存取機制不同的。比如說:

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)驗,我了解更多科技知識!