亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java中的String對象數據類型全面解析

2019-11-26 16:18:46
字體:
來源:轉載
供稿:網友
1. 首先String不屬于8種基本數據類型,String是一個對象。

因為對象的默認值是null,所以String的默認值也是null;但它又是一種特殊的對象,有其它對象沒有的一些特性。

2. new String()和new String("")都是申明一個新的空字符串,是空串不是null;

3. String str="kvill";

String str=new String ("kvill");的區別:
在這里,我們不談堆,也不談棧,只先簡單引入常量池這個簡單的概念。
常量池(constant pool)指的是在編譯期被確定,并被保存在已編譯的。class文件中的一些數據。它包括了關于類、方法、接口等中的常量,也包括字符串常量。

看例1:
復制代碼 代碼如下:

String s0="kvill";
String s1="kvill";
String s2="kv" + "ill";
System.out.println( s0==s1 );
System.out.println( s0==s2 );

結果為:
true
true
首先,我們要知結果為道Java會確保一個字符串常量只有一個拷貝。
因為例子中的s0和s1中的"kvill"都是字符串常量,它們在編譯期就被確定了,所以s0==s1為true;而"kv"和"ill"也都是字符串常量,當一個字符串由多個字符串常量連接而成時,它自己肯定也是字符串常量,所以s2也同樣在編譯期就被解析為一個字符串常量,所以s2也是常量池中"kvill"的一個引用。
所以我們得出s0==s1==s2;
用new String() 創建的字符串不是常量,不能在編譯期就確定,所以new String() 創建的字符串不放入常量池中,它們有自己的地址空間。
看例2:
復制代碼 代碼如下:

String s0="kvill";
String s1=new String("kvill");
String s2="kv" + new String("ill");
System.out.println( s0==s1 );
System.out.println( s0==s2 );
System.out.println( s1==s2 );

結果為:
false
false
false
例2中s0還是常量池中"kvill"的應用,s1因為無法在編譯期確定,所以是運行時創建的新對象"kvill"的引用,s2因為有后半部分 newString("ill")所以也無法在編譯期確定,所以也是一個新創建對象"kvill"的應用;明白了這些也就知道為何得出此結果了。

4. String.intern():

再補充介紹一點:存在于。class文件中的常量池,在運行期被JVM裝載,并且可以擴充。String的intern()方法就是擴充常量池的一個方法;當一個String實例str調用intern()方法時,Java查找常量池中是否有相同Unicode的字符串常量,如果有,則返回其的引用,如果沒有,則在常量池中增加一個Unicode等于str的字符串并返回它的引用;看例3就清楚了
例3:
復制代碼 代碼如下:

String s0= "kvill";
String s1=new String("kvill");
String s2=new String("kvill");
System.out.println( s0==s1 );
System.out.println( "**********" );
s1.intern();
s2=s2.intern(); //把常量池中"kvill"的引用賦給s2
System.out.println( s0==s1);
System.out.println( s0==s1.intern() );
System.out.println( s0==s2 );

結果為:
false
**********
false //雖然執行了s1.intern(),但它的返回值沒有賦給s1
true //說明s1.intern()返回的是常量池中"kvill"的引用
true
最后我再破除一個錯誤的理解:
有人說,"使用String.intern()方法則可以將一個String類的保存到一個全局String表中,如果具有相同值的 Unicode字符串已經在這個表中,那么該方法返回表中已有字符串的地址,如果在表中沒有相同值的字符串,則將自己的地址注冊到表中"如果我把他說的這個全局的String表理解為常量池的話,他的最后一句話,"如果在表中沒有相同值的字符串,則將自己的地址注冊到表中"是錯的:
看例4:
復制代碼 代碼如下:

String s1=new String("kvill");
String s2=s1.intern();
System.out.println( s1==s1.intern() );
System.out.println( s1+" "+s2 );
System.out.println( s2==s1.intern() );

結果為:
false
kvill kvill
true
在這個類中我們沒有聲名一個"kvill"常量,所以常量池中一開始是沒有"kvill"的,當我們調用s1.intern()后就在常量池中新添加了一個"kvill"常量,原來的不在常量池中的"kvill"仍然存在,也就不是"將自己的地址注冊到常量池中"了。
s1==s1.intern()為false說明原來的"kvill"仍然存在;
s2現在為常量池中"kvill"的地址,所以有s2==s1.intern()為true.

5. 關于equals()和==:

這個對于String簡單來說就是比較兩字符串的Unicode序列是否相當,如果相等返回true;而==是比較兩字符串的地址是否相同,也就是是否是同一個字符串的引用。

6. 關于String是不可變的

這一說又要說很多,大家只要知道String的實例一旦生成就不會再改變了,比如說:String str="kv"+"ill"+" "+"ans";
就是有4個字符串常量,首先"kv"和"ill"生成了"kvill"存在內存中,然后"kvill"又和" " 生成 "kvill "存在內存中,最后又和生成了"kvill ans";并把這個字符串的地址賦給了str,就是因為String的"不可變"產生了很多臨時變量,這也就是為什么建議用StringBuffer的原因了,因為StringBuffer是可改變的。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产视频精品va久久久久久| 久久综合色影院| 一道本无吗dⅴd在线播放一区| 青草热久免费精品视频| 亚洲精品影视在线观看| 国产91在线播放九色快色| 日韩福利伦理影院免费| 国产精品一区二区三区免费视频| 成人免费自拍视频| 久久久精品久久久久| 欧美激情在线观看| 亚洲一二在线观看| 亚洲欧美精品一区二区| 国产精品一区二区三区在线播放| 清纯唯美日韩制服另类| 国产女精品视频网站免费| 全亚洲最色的网站在线观看| 国产精品美女久久| 综合网中文字幕| 亚洲第一综合天堂另类专| 欧美中文在线视频| 97精品国产aⅴ7777| 黑人巨大精品欧美一区二区一视频| 国产不卡精品视男人的天堂| 久热精品在线视频| 中文字幕不卡在线视频极品| 国产精品www网站| 91av在线网站| 亚洲天堂开心观看| 91日本在线观看| 成人网在线视频| 国产精品福利网站| 欧美日韩午夜激情| 国产精品视频网址| 亚洲www在线| 国产在线日韩在线| 精品福利一区二区| 成人黄色在线播放| 亚洲免费人成在线视频观看| 亚洲成人1234| 欧美成人免费视频| 欧美又大又硬又粗bbbbb| 国产欧美精品日韩精品| 亚洲激情视频在线观看| 在线免费观看羞羞视频一区二区| 久久久久久免费精品| 久久久免费精品视频| 久久影院资源网| 亚洲欧美一区二区三区情侣bbw| 久久这里只有精品视频首页| 成人免费视频97| 亚洲国产精品嫩草影院久久| 黑人巨大精品欧美一区二区| 亚洲日韩欧美视频一区| 欧美黑人xxxⅹ高潮交| 日韩天堂在线视频| 成人信息集中地欧美| 日韩国产一区三区| 日韩成人免费视频| 中文字幕v亚洲ⅴv天堂| 日韩va亚洲va欧洲va国产| 午夜精品在线观看| 久久久久北条麻妃免费看| 国产精品日韩欧美| 亚洲成人av片在线观看| 欧美性xxxx在线播放| 日韩极品精品视频免费观看| 91网站免费观看| 国产视频一区在线| 一级做a爰片久久毛片美女图片| 日韩av一卡二卡| 成人有码在线播放| 中文字幕欧美亚洲| 久久中文字幕视频| 成人伊人精品色xxxx视频| 欧美精品videos性欧美| 亚洲社区在线观看| 中日韩午夜理伦电影免费| 国产第一区电影| 久久久久久香蕉网| 亚洲丝袜在线视频| 中文字幕亚洲一区二区三区五十路| 久久久999精品视频| 国产精品海角社区在线观看| 在线观看成人黄色| 成人免费高清完整版在线观看| 亚洲小视频在线观看| 97在线看免费观看视频在线观看| 日韩精品丝袜在线| 精品亚洲va在线va天堂资源站| 日韩精品视频在线免费观看| 亚洲美女av网站| 九色成人免费视频| 国外成人在线视频| 精品久久久免费| 中文字幕日韩有码| 久久久久国产视频| 国产精品久久久久久中文字| 精品人伦一区二区三区蜜桃网站| 国产一区二区精品丝袜| 欧美黑人又粗大| 精品国内产的精品视频在线观看| 久久九九有精品国产23| 成人欧美在线视频| 精品日韩视频在线观看| 欧美日韩国产二区| 欧美激情中文字幕乱码免费| 一级做a爰片久久毛片美女图片| 欧美国产极速在线| 中文字幕亚洲在线| 动漫精品一区二区| 免费99精品国产自在在线| 91在线免费网站| 久久免费视频这里只有精品| 清纯唯美亚洲综合| 日韩免费视频在线观看| 亚洲一区二区三区香蕉| 亚洲亚裔videos黑人hd| 欧美日韩国产一区二区| 秋霞成人午夜鲁丝一区二区三区| 欧美激情啊啊啊| 久久精品这里热有精品| 国产精品一区二区三| 欧美性猛交xxxx偷拍洗澡| 日韩av在线高清| 国产成人亚洲综合91| 日韩电视剧免费观看网站| 九九热这里只有精品免费看| 亚洲free嫩bbb| 国产精品福利观看| 在线观看日韩www视频免费| 成人免费激情视频| 精品日本美女福利在线观看| 亚洲精品www久久久| 久青草国产97香蕉在线视频| 国产精品色午夜在线观看| 4438全国亚洲精品在线观看视频| 日韩美女激情视频| 96pao国产成视频永久免费| 国产精品永久免费| 精品呦交小u女在线| www.欧美精品一二三区| 操91在线视频| 国产精品视频午夜| 97av在线播放| 精品视频在线导航| 国产97在线播放| 国外成人性视频| 亚洲综合精品伊人久久| 亚洲午夜精品视频| 久久偷看各类女兵18女厕嘘嘘| 欧美壮男野外gaytube| 国产精品视频网站| 欧美福利视频在线观看| 欧美日韩在线影院| 在线日韩日本国产亚洲| 欧美国产第二页| 久久在线精品视频| 国产成人精品网站| 国外成人在线播放| 亚洲高清一区二| 亚洲综合精品伊人久久| 国产成人精品在线播放| 91网在线免费观看|