日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java string的作用_浅谈java String不可变的好处

發布時間:2025/3/8 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java string的作用_浅谈java String不可变的好处 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、java內部String類的實現:

java 8:

public final class String

implements java.io.Serializable, Comparable, CharSequence {

/** The value is used for character storage. */

private final char value[];

}

java 9 及之后:(使用coder標識了編碼)

public final class String

implements java.io.Serializable, Comparable, CharSequence {

/** The value is used for character storage. */

private final byte[] value;

/** The identifier of the encoding used to encode the bytes in

{@code value}. */

private final byte coder;

}

二、為何要將String定義為final不可變?

因為在程序編寫的過程中,會大量地用到String常量,如果每次聲明一個String引用都要新建一個String對象,那么會造成空間的極大浪費。于是,在java的堆中開辟了一塊存儲空間String pool,用于存儲String常量對象。當有多個String引用指向同樣的String字符串時,實際上是指向的是同一個Sting pool中的對象,而不需要額外的創建對象。

public class Test{

public static void main(String [] args){

String a="abc";

String b="abc";//對象保存在string pool中

String c=new String("abc");//以new創建的對象保存在堆中

System.out.println("a==b:"+(a==b));

System.out.println("a==c:"+(a==c));

}

}

實現String pool就需要String定義為final,否則,當引用a、b都指向“abc”時,通過a將對象改變后,引用b所指向的對象被動地改變了。那程序員不得氣得半死?

三、String不可變的其他好處

1、以String作為HashMap的key,String的不可變保證了hash值的不可變。

2、String作為網絡連接的參數,它的不可變性提供了安全性。

3、String不可變,所以線程安全。

以上所述是小編給大家介紹的java String不可變的好處詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

總結

以上是生活随笔為你收集整理的java string的作用_浅谈java String不可变的好处的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。