大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 編程基礎認知,Java字符型常量詳解

編程基礎認知,Java字符型常量詳解

更新時間:2020-06-18 14:23:50 來源:動力節點 瀏覽2252次

在Java程序中經常會遇到類似于"Hello"這樣地字符串,那么這種類型的字符串是Java中是如何存儲,下面就來討論一下字符串常量在內存中的存儲方式

Java程序在編譯時會將程序中出現的常量(包括:char、byte、short、int、long、boolean和String類型)放到一個叫做常量池的地方。常量池也稱為對象池,顧名思義常量池中存儲的是對象。

那么在源程序中檢測到"Hello"這樣地常量字符串之后,編譯器都干了些什么:

首先,在常量池中創建一個String對象,該對象的內存分布如下圖:

編程基礎認知,Java字符型常量詳解

這里就需要提一下String定義的兩個變量:

private final char value[];//The value is used for character storage
private int hash;//Cache the hash code for the string

其中第一個就是實際存儲字符串的數組,所有字符串最終的存儲形式都是字符數組。從上圖中可以很清晰的看出,實際的字符數組還是存儲在堆中,常量池中存儲的是String對象。

當執行String str="Hello",只是將常量池中"Hello"對象的地址賦給了str。

除了上面這個字符串常量的內存模型需要理清之外,String類還有幾個很常用的構造函數,也需要對內存模型非常熟悉:

public String(){
this.value="".value;
}

這是默認的構造函數,它將一個空串的字符數組引用賦給了本類的數組數組引用,所以這個String對象中什么也沒有當然這樣做并沒有什么好處,因為String對象一但創建便不可更改其內容(從value的修飾關鍵字final可以看出)。

public String(String original){
this.value=original.value;
this.hash=original.value;
}

這里只是簡單的復制了引用的值,并沒有復制引用的內容,它們仍然指向同一個對象。

public String(char value[]){
this.value=Arrays.copyOf(value,value.length);
}

Array.copyOf()會將value中的值重新拷貝一份出來,所以this.value和參數中的value完全是兩個對象,只不過它們的值相同而已

其余的構造函數也基本類似,大家可自行分析

編程基礎認知,Java字符型常量詳解

Java技術相關內容

Java字符串類型:http://m.dabaquan.cn/tutorial_java_advance/629.html

以上就是動力節點java培訓機構的小編針對“編程基礎認知,Java字符型常量詳解”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 一级大黄视频 | 91在线免费公开视频 | 久久96国产精品久久久 | 国内一级特黄女人精品片 | 久艹伊人 | 久久婷婷五色综合夜啪 | 国产一区视频在线播放 | 色 在线播放 | 欧美精品 在线播放 | 欧美日韩一本 | 色婷婷久久免费网站 | 亚洲欧美日韩精品一区 | 亚洲伦理中文字幕 | 国产亚洲精 | 国产精品第二页在线播放 | 久久精品国产99久久99久久久 | 美女叫春| 一级久久 | 久久网站在线观看 | 无遮挡又黄又爽又色的视频免费 | 日韩亚洲成a人片在线观看 日韩亚洲第一页 | 日本一区二区成人教育 | 国产自精品在线 | 伊人久久91 | 久久亚洲一级毛片 | 久久毛片免费看 | 狠狠狠狠狠狠狠狠 | 日韩一级片 | 91正在播放极品白嫩在线观看 | 中国特级黄一级真人毛片 | 日韩黄网 | 国产成人精品高清不卡在线 | 国产成人精品无缓存在线播放 | 日韩精品中文字幕在线 | 成人97在线观看免费高清 | 久久中文字幕一区二区三区 | 亚洲精品欧美日韩 | 久久久久久久久久久观看 | 久久精品国产99国产精品免费看 | 四虎免费在线观看视频 | 国产精品福利视频免费观看 |