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

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

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

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

在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.ilovecolors.com.cn/tutorial_java_advance/629.html

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

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 日韩福利视频高清免费看 | 久热这里只精品热在线观看 | 国产黄色毛片视频 | 亚洲欧美中文日韩在线v日本 | 国产精品久久久久久久久久一区 | 九九亚洲精品 | 男女交性过程视频无遮挡在线 | 91精品啪在线观看国产线免费 | 福利网址在线 | 香蕉视频污片 | 久久高清一级毛片 | 天天爽夜夜 | 天天舔天天| 国产91精品一区二区视色 | 国产精品二区三区 | 污视频网站在线免费看 | 丝袜足控免费软件xx | 18亚洲男同志videos网站 | 国产激情视频在线播放 | 日本亚州视频在线八a | 一个人在线免费观看www视频 | 52精品免费视频国产专区 | 国产成人做受免费视频 | 欧美性猛交xxx嘿人猛交 | 亚洲天堂v | 精品久久久久免费极品大片 | 成人涩涩视频 | 最近的免费中文字幕视频 | 日本一二区视频 | 中文字幕精品亚洲无线码二区 | 日韩不卡一区二区 | 国产精品青草久久 | 天天摸日日操 | 欧美亚洲风情 | 另类视频在线 | 2020国产欧洲精品视频 | 99在线精品视频在线观看 | 中文字幕精品在线 | 日本三级黄 | 久久久久久97 | 亚洲精品精品 |