国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

String類型的創建機制

2019-11-08 02:45:25
字體:
來源:轉載
供稿:網友

String類型的創建機制

??由于是第一篇博客,首先介紹一下自己吧,博主是某高校研究生,方向是醫療軟件開發(本科是生物方向),剛開始學編程半年,一直想寫博客卻又怕才疏學淺,遲遲未敢動筆,但是丑媳婦總要見公婆,今天終于狠狠心寫了第一篇博客,如有錯誤希望大家多多指正。

基本類型和引用類型

??首先科普一下java類型的有關知識,JAVA中類型可以分為兩大類,基本類型和引用類型,基本類型有9大類:

基本類型 大小 最小值 最大值 包裝器類型
boolean - - - Boolean
char 16 bit Unicode 0 Unicode 2^16-1 Character
byte 8 bits -128(-2^7) 127(2^7-1) Byte
short 16 bits -2^15 2^15-1 Short
int 32 bits -2^31 2^31-1 Integer
long 64 bits -2^63 2^63-1 Long
float 32 bits - 有效數字6位 Float
double 64 bits - 有效數字15位 Double
void - - - Void

??除了這9個基本類型之外則都是引用類型,基本類型和引用類型的變量都存儲于棧上,那么基本類型跟引用類型的區別是什么呢?區別在于基本類型的數據(值)也存儲于棧上,基本類型的變量直接存儲值;而引用類型的數據(對象)存儲于堆上,引用類型的變量存儲的是數據的地址;所以基本變量是值傳遞,引用變量是地址傳遞(實際上也是值的傳遞,不過是地址值),這也是為什么基本類型可以直接用“==“比較,而類一般要根據需要重寫equals方法來進行的比較。

String類型的創建機制

??基本類型并不包括String,說明String是一個引用類型,但是為什么網上有那么多對String類型的爭論呢?首先看下面一段代碼:

public static void main(String[] args) { String A = "hello"; String B = "hello"; System.out.PRintln(A==B);//true B = A; B ="world"; System.out.println(A);//"hello"

??很奇怪是不是?String的表現完全像一個基本類型,這是為什么呢? ??首先介紹String對象的兩種創建方法:1,String A = “hello ?? ?? ?? ?? ?? ?? ?? ??????2,String A = new String(“hello”) ?? 那么這兩種方法有什么區別呢?方法1要調用字符串常量池,而方法2會忽略掉字符串常量池。 ??字符串常量池位于堆上,當使用方法1時,當需要創建一個新的字符串的時候(不用new),會自動去常量池找是否有相同的字符串,如果有就直接引用,沒有就重新創建一個對象并放入池中。 ??當創建A時,字符串常量池中沒有“hello”,所以就創建了一個字符串對象”hello”;

圖片名稱 當創建B時,字符串常量池中有“hello”,所以就直接把B指向字符串對象“hello”; ??此時A和B都指向同一個”hello”(即引用變量A,B儲存的都是字符串對象”hello”的地址),故A==B為true; 圖片名稱 ??B = A,確保B和A共同引用一個對象;B=“world”,常量池中無“world”字符串對象,重新創建,并將B指向“world”字符串對象。所以A自然還是指向“hello”,如圖所示。 圖片名稱

??那么且看下面一段代碼:

String A = new String("hello"); String B = "hello"; System.out.println(A==B);//false

??你看,A和B是不是都指向“hello”對象,但是他們卻并不是指向同一個“hello”對象,原因就是用了new,new略過了字符串常量池,直接創建“hello”字符串對象,導致B在字符串常量池中沒有找到“hello”對象,重新創建了一個,所以A和B并不是指向同一個對象。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 襄垣县| 临沂市| 赤壁市| 贡觉县| 左云县| 武胜县| 宁远县| 汶上县| 沅陵县| 施甸县| 鄂托克旗| 曲阜市| 新巴尔虎左旗| 砚山县| 出国| 四子王旗| 湖南省| 和静县| 元阳县| 泰顺县| 鄂托克前旗| 和顺县| 南投县| 新郑市| 海南省| 丰镇市| 光泽县| 佛坪县| 江阴市| 邵东县| 昌宁县| 宝鸡市| 靖宇县| 宁波市| 黑龙江省| 当阳市| 湖南省| 厦门市| 阜新| 五原县| 永宁县|