黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 Java字符串常量池的介紹

Java字符串常量池的介紹

更新時(shí)間:2022-09-22 09:23:10 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽816次

了解Java 中的 String 類、使其不可變背后的動(dòng)機(jī)以及關(guān)于String常量池的整個(gè)想法。當(dāng)我們通過(guò) String 字面量或 String 構(gòu)造函數(shù)創(chuàng)建 String 實(shí)例時(shí),我們將看到如何操作內(nèi)存。

1. Java 中的不可變字符串

字符串是一個(gè)字符序列。在 Java 中,與其他編程語(yǔ)言類似,字符串是預(yù)定義類型的一部分。Java 有java.lang.String類,其實(shí)例代表字符串。

該類String是一個(gè)不可變的類。不可變意味著String一旦創(chuàng)建了它的實(shí)例就不能更改。

通常,許多敏感信息(用戶名、密碼、URL、端口、數(shù)據(jù)庫(kù)、套接字連接)都以字符串的形式表示和傳遞。通過(guò)使這些信息不可變,代碼變得安全,可以抵御各種安全威脅。

字符串不變性還允許緩存字符串文字,這允許應(yīng)用程序使用大量字符串文字,而對(duì)堆內(nèi)存和垃圾收集器的影響最小。

在可變上下文中,對(duì)字符串文字的修改可能會(huì)導(dǎo)致變量損壞。

2. Java中的字符串常量池是什么?

Java中的內(nèi)存分為三個(gè)部分,即堆、棧和字符串池。字符串常量池是用于存儲(chǔ)字符串文字的特殊區(qū)域。

請(qǐng)注意,在 Java 7 之前,字符串池是永久代內(nèi)存區(qū)域的一部分。

從 Java 7 開始,字符串與應(yīng)用程序創(chuàng)建的其他對(duì)象一起分配在 Java 堆區(qū)域中。

后來(lái),在 Java 8 中,永久代已被完全刪除。

因此,在最新的 JVM 中,字符串池是堆內(nèi)存中分配用于存儲(chǔ)字符串文字的特殊區(qū)域。

3. 字符串字面量和字符串對(duì)象的區(qū)別

在 Java 中,字符串字面量是使用雙引號(hào)創(chuàng)建的字符串,而字符串對(duì)象是使用new()運(yùn)算符創(chuàng)建的字符串。

請(qǐng)注意,字符串字面量是在字符串池區(qū)域中創(chuàng)建的,而字符串對(duì)象是在堆內(nèi)存區(qū)域中創(chuàng)建的。

String strLiteral = "Hello World";
String strObj = new String("Hello World");

假設(shè)我們要?jiǎng)?chuàng)建兩個(gè)內(nèi)容相同的字符串“ howtodoinjava”。如果內(nèi)容為“ howtodoinjava”的字符串已經(jīng)存在,那么新的文字將指向已經(jīng)存在的文字。對(duì)于 String 對(duì)象,每次都會(huì)在堆中創(chuàng)建一個(gè)新的 String 對(duì)象。

讓我們看一個(gè)例子。

String a = "howtodoinjava";
String b = "howtodoinjava";
System.out.println(a == b);     //true

在上面的程序中,我們創(chuàng)建了兩個(gè)具有相同內(nèi)容的字符串文字。在字符串池中創(chuàng)建 'a' 后,下一個(gè)字符串字面量 ' b' 指向內(nèi)存區(qū)域中的同一個(gè)對(duì)象,所以'a == b'是true。

String a = "howtodoinjava";
String b = "howtodoinjava";
System.out.println(a == b);
String c = new String("howtodoinjava");
System.out.println(a == b);     //true
System.out.println(b == c);     //false

4. String.intern() 方法

我們知道字符串字面量是在字符串池中創(chuàng)建的,而字符串對(duì)象是在堆內(nèi)存區(qū)域中創(chuàng)建的。

我們可以使用方法String.intern()為字符串對(duì)象創(chuàng)建字符串字面量。當(dāng)在字符串對(duì)象上調(diào)用時(shí),方法intern()會(huì)在堆內(nèi)存中創(chuàng)建字符串對(duì)象的精確副本,并將其存儲(chǔ)在字符串常量池中。

String a = "howtodoinjava";
String b = "howtodoinjava";
String c = new String("howtodoinjava");
String d = c.intern();

在上面的示例中,字符串 a, b 和d將引用 SCP 中的相同字符串文字。該字符串c將繼續(xù)指向堆中的對(duì)象。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 欧美在线一级视频 | 黄色一级免费片 | 性欧美videos另类hd | 一个人看的www免费视频中文 | 韩国伦理在线 | 久久er国产精品免费观看2 | 亚洲 中文 欧美 日韩 在线 | 国产第二十三页浮力影院 | 国内精品久久久久久西瓜色吧 | 一区二区三区视频在线播放 | 黄色一级片免费在线观看 | 成人午夜视频在线播放 | 婷婷狠狠干 | 国产成人免费在线观看 | 国产综合精品日本亚洲777 | 亚洲日本中文 | 操久久久 | 在线a视频网站 | 国产欧美日韩高清专区ho | 国产日韩在线视频 | 性欧洲黑人巨大videos | 亚洲成a人片在线观看尤物 亚洲成a人片在线观看88 | 国产精品成人免费综合 | 日韩精选在线 | 看全色黄大色大片免费 | 女全身裸无遮挡免费毛片 | 欧美日韩国产人成在线观看 | 久久国产精品广西柳州门 | 无遮挡羞羞视频 | 免费国产a国产片高清不卡 免费国产a | 超人碰碰碰人人成碰人 | 中文字幕欧美日韩高清 | 国产高清一区二区三区四区 | 污黄视频在线观看 | 无夜精品久久久久久 | 99精品视频在线播放2 | 久久精品5| 狠狠躁夜夜躁人人爽天天天天 | 欧美日韩另类在线 | 亚洲二三区 | 黄色三级在线 |