日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java integer常量池_为什么Integer常量池的行为在127发生变化?

發布時間:2024/9/27 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java integer常量池_为什么Integer常量池的行为在127发生变化? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

不,數字常量池的工作方式不同于字符串。對于字符串,只保留編譯時常量-而對于整數類型的包裝器類型,如果任何裝箱操作都適用于該值,則任何裝箱操作都將始終使用該池。因此,例如:

int x = 10;

int y = x + 1;

Integer z = y; // Not a compile-time constant!

Integer constant = 11;

System.out.println(z == constant); // true; reference comparison

JLS保證池值的范圍很小,但是實現可以根據需要使用更大的范圍。

請注意,盡管不能保證,但是我看過的每個實現都可以Integer.valueOf用來執行裝箱操作-因此,即使沒有該語言的幫助,您也可以得到相同的效果:

Integer x = Integer.valueOf(100);

Integer y = Integer.valueOf(100);

System.out.println(x == y); // true

從JLS的5.1.7節開始:

如果裝箱的值p為true,false,一個字節或介于\ u0000到\ u007f范圍內的char或-128到127(含)之間的整數或短數,則令r1和r2為p的任何兩次拳擊轉換。r1 == r2總是這樣。

理想情況下,將給定的原始值p裝箱將始終產生相同的參考。實際上,使用現有的實現技術可能不可行。以上規則是一種務實的妥協。上面的最后一個子句要求始終將某些通用值裝在無法區分的對象中。該實現可以懶惰地或急切地緩存它們。對于其他值,此公式不允許對程序員方面的帶框值的身份進行任何假設。這將允許(但不要求)共享部分或全部這些引用。

這樣可以確保在大多數情況下,行為都是理想的,而不會造成不必要的性能損失,尤其是在小型設備上。例如,較少內存限制的實現可能會緩存所有char和short值,以及-32K到+ 32K范圍內的int和long值。

總結

以上是生活随笔為你收集整理的java integer常量池_为什么Integer常量池的行为在127发生变化?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。