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

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

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

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

在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字符型常量詳解”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 欧美亚洲在线 | 国产国产精品人在线观看 | 亚洲有色| 久久cao| 亚洲高清免费视频 | 亚洲视频在线免费播放 | 亚洲啪视频 | 最近中文国语字幕在线播放视频 | 精品自拍视频在线观看 | 久草在线免费资源 | 国产精品久久久久久网站 | 国产羞羞事1000部在线观看 | 日本伊人网 | 品色视频 | 玖玖国产在线观看 | 一级免费a | 国产精品18久久久久久久久久 | 91啦视频在线观看 | 日韩免费福利视频 | 日韩久久一级毛片 | 亚洲欧美另类专区 | 五月婷婷激情综合 | 九九视频在线观看视频23 | 亚洲一区二区精品视频 | 国产福利免费在线观看 | 日本一级特黄aa毛片免费观看 | 国内精品自在欧美一区 | 久久er99热这里只是精品 | 色狠狠一区 | jizzjizzjizz护士| 女性下面全部视频免费 | free性欧美喷潮hd | 婷婷视频网站 | 亚洲欧美综合在线观看 | 免费一看一级毛片全播放 | 黄片毛片一级片 | 久久国内精品视频 | 特大毛片 | 四虎成人免费网址在线 | baoyu777永久免费视频 | 久草在线观看视频 |