java常量池

java一共實現了6中基本類型的常量池:Byte , Short,Integer,Long,Boolean,Characher。(Double和Float沒有實現)
和一種String的常量池,他們在內存的方法區裏

String常量池:

String常量池可以儲存各種不同大小的String常量,String str1 = “abc”時,他會在常量池創建abc這個字符串常量對象,並指向它

但你再次String str2 = “abc”時,由於常量池裏已經有abc了,所以str2也是會指向同一個abc常量

正因爲他們指向的內存相等,所以str==str1爲true

基本類型常量池:

和String常量池不同,基本類型的常量池只能儲存-128到127之間的常量

當你Integer a = 127;Integer b = 127;a和b會自動拆箱,會指向常量池中創建好的127常量,所以他們a==b爲true;

但是當你Integer a = 128;Integer b = 128;超過了-128到127這個範圍,它們就不會自動拆箱了,會在堆內存裏面直接new對象,

這時候他們就和普通的類對象沒有區別,用等號比較的只是他們指向的內存地址而已

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章