包裝類之常量池

本文由網(wǎng)友大力支持:http://www.reibang.com/p/c7f47de2ee80

?8種基本類型的包裝類和常量池

Byte,Short,Integer, Long,Boolean,Character妥曲。

Integer:

Integer i1 = 40; Integer i2 = 40;? ?i1 == i2;

//輸出true;


默認創(chuàng)建了數(shù)值[-128岔帽,127]的相應類型的緩存數(shù)據(jù)满着,但是超出此范圍仍然會去創(chuàng)建新的對象畦攘。但是官边,以下情況會輸出false.

? Integer I1 = 50;?

Integer I2 =? new Integer(50) ;

//輸出false( I1 ==? I2);

Boolean這個就true和false,這個很容易理解

Double:
兩種浮點數(shù)類型的包裝類Float,Double并沒有實現(xiàn)常量池技術癞季。

Float 也同樣沒有實現(xiàn)锡移。

Double i1=2.2; Double i2=2.2 ;??i1==i2 ;? //輸出false

String:

Stringstr1 ="abcd";? ? ? ? Stringstr2 =newString("abcd");? (str1==str2); //false

第一種方式是在常量池拿對象,第二種是直接在堆中創(chuàng)建一個新對象崔赌。 所以輸出false意蛀。

但是有一個方法:

java.lang.String.intern();

String的intern()方法會查找在常量池中是否存在一份equal相等的字符串,如果有則返回該字符串的引用,如果沒有則添加自己的字符串進入常量池

Stringstr1 ="abcd";? ? ? ?Stringstr2 =newString("abcd");??

?str1.intern()? == str2? ; //true

這樣會輸出 true健芭。

運行時常量池 具備動態(tài)性 县钥。在運行期間也可能將新的常量放入池中 。 用 intern 方法最多慈迈。

另外一些情況如下:

String s1 = "s";? ?String s2 = "f";

String s3 = "sf";

s3 == s1+ s2); //false

s3 == "s"+ "f"); //true

只有使用引號包含文本的方式創(chuàng)建的String對象之間使用“+”連接產生的新對象才會被加入字符串池中若贮。?所以第一種輸出 false。

String s1 = new String("xyz");?**創(chuàng)建了幾個對象? **

1)類加載對一個類只會進行一次兜看。"xyz"在類加載時就已經創(chuàng)建并駐留了(如果該類被加載之前已經有"xyz"字符串被駐留過則不需要重復創(chuàng)建用于駐留的"xyz"實例)锥咸。駐留的字符串是放在全局共享的字符串常量池中的。(2)在這段代碼后續(xù)被運行的時候细移,"xyz"字面量對應的String實例已經固定了搏予,不會再被重復創(chuàng)建。所以這段代碼將常量池中的對象復制一份放到heap中弧轧,并且把heap中的這個對象的引用交給s1 持有雪侥。這條語句創(chuàng)建了2個對象。?

常量池;

常量池分為兩種:靜態(tài)常量池和運行時常量池精绎。

靜態(tài)常量池也就是Class文件中的常量池速缨,我們這里舉一個簡單的例子,下面是一個HelloWorld的與源文件和Class文件代乃。

運行時常量池:運行時常量池是方法區(qū)的一部分旬牲。Class文件中除了有類的版本、字段搁吓、方法原茅、接口等描述信息外還有一項信息是常量池。

常量池是為了避免頻繁的創(chuàng)建和銷毀對象而影響系統(tǒng)性能堕仔,其實現(xiàn)了對象的共享擂橘。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市摩骨,隨后出現(xiàn)的幾起案子通贞,更是在濱河造成了極大的恐慌,老刑警劉巖恼五,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昌罩,死亡現(xiàn)場離奇詭異,居然都是意外死亡唤冈,警方通過查閱死者的電腦和手機峡迷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來你虹,“玉大人绘搞,你說我怎么就攤上這事「滴铮” “怎么了夯辖?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長董饰。 經常有香客問我蒿褂,道長圆米,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任啄栓,我火速辦了婚禮娄帖,結果婚禮上,老公的妹妹穿的比我還像新娘昙楚。我一直安慰自己近速,他們只是感情好,可當我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布堪旧。 她就那樣靜靜地躺著削葱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪淳梦。 梳的紋絲不亂的頭發(fā)上析砸,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天,我揣著相機與錄音爆袍,去河邊找鬼首繁。 笑死,一個胖子當著我的面吹牛陨囊,可吹牛的內容都是我干的蛮瞄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼谆扎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了芹助?” 一聲冷哼從身側響起堂湖,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎状土,沒想到半個月后无蜂,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡蒙谓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年斥季,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片累驮。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡酣倾,死狀恐怖,靈堂內的尸體忽然破棺而出谤专,到底是詐尸還是另有隱情躁锡,我是刑警寧澤,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布置侍,位于F島的核電站映之,受9級特大地震影響拦焚,放射性物質發(fā)生泄漏。R本人自食惡果不足惜杠输,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一赎败、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蠢甲,春花似錦僵刮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至能岩,卻和暖如春寞宫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拉鹃。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工辈赋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人膏燕。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓钥屈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親坝辫。 傳聞我的和親對象是個殘疾皇子篷就,可洞房花燭夜當晚...
    茶點故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內容

  • Java是一種可以撰寫跨平臺應用軟件的面向對象的程序設計語言。Java 技術具有卓越的通用性近忙、高效性竭业、平臺移植性和...
    Java小辰閱讀 390評論 1 4
  • 一:在JAVA中,有六個不同的地方可以存儲數(shù)據(jù): 1. 寄存器(register)及舍。 這是最快的存儲區(qū)未辆,因為它位...
    辰321閱讀 417評論 0 0
  • 相關概念 常量池的定義常量池(constant pool):指的是在編譯期被確定,并被保存在已編譯的.class文...
    snoweek閱讀 800評論 0 4
  • 寫在前面(常見面試題) 基本問題: 介紹下 Java 內存區(qū)域(運行時數(shù)據(jù)區(qū)) Java 對象的創(chuàng)建過程(五步锯玛,建...
    Java黎先生閱讀 660評論 1 20
  • ??需要說明的一點是咐柜,這篇文章是以《深入理解Java虛擬機》第二版這本書為基礎的,這里假設大家已經了解了JVM的運...
    Geeks_Liu閱讀 14,023評論 5 44