大战熟女丰满人妻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://www.dabaquan.cn/tutorial_java_advance/629.html

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

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久久久久久久亚洲精品 | 久久美女网 | 日韩欧美在线播放 | 四虎影视4hutv最新地址在线 | h片在线观看免费 | 97视频在线观看视频在线精品 | 国产精品久久自在自2021 | 黄色成人在线播放 | 久久中文字幕亚洲精品最新 | 一区二区三区中文 | 中文字幕在线观看一区二区 | 欧美日韩国产在线 | 欧美色欧美亚洲高清在线观看 | 女人18毛片a级毛片免费看一 | 水浒传删减剧情在线观看 | 特级毛片a级毛免费播放 | 草久视频在线 | 欧美色图一区二区 | 亚洲激情网站 | 久久亚洲影院 | 成人小视频免费在线观看 | 亚洲伦理中文字幕 | 久久久久久久网站 | 狠狠亚洲丁香综合久久 | 久久天天躁综合夜夜黑人鲁色 | 亚洲视频中文字幕在线观看 | 色无极综合 | 99在线小视频| 国内成人精品视频 | 久久riav.com | 五月激情丁香婷婷综合第九 | 97在线资源 | 一区二区三 | 久久资源365 | 久久天天躁狠狠躁夜夜躁综合 | 久久影院一区 | 一级欧美毛片成人免费视频 | 亚洲精品你懂的 | 天天操夜夜骑 | 国产精品高清一区二区不卡 | 色婷婷久久久swag精品 |