在java 5中警惕」 「 陷阱

2021-08-25 16:05:54 字數 799 閱讀 4090

在有些jvm中,integer型別從-128到127的範圍內會放回用乙個物件,所以用」==「 的時候,同樣大小的ingeter倆個物件會返回true。而超過這個範圍,就可能返回false了。

integer i1 = 300;

integer i2 = 300;

if (i1 == i2)

system.out.println("i1 and i2 is equal");

else

system.out.println("i1 and i2 is not equal ");

執行這段**時,可能列印出的結果是 i1 and i2 is not equal 。因為jvm沒有對這倆個物件自動解包,所以i1和i2是倆個不同的物件,所以它們不相同。又例如:

integer i1 = 100;

integer i2 = 100;

if (i1 == i2)

system.out.println("i1 and i2 is equal");

else

system.out.println("i1 and i2 is not equal ");

這時你執行**則列印出 」i1 and i2 is equal「  這是為什麼呢? 因為jvm對int值從-128 到127範圍的值會儲存進行快取儲存,所以i1和i2實際上是同乙個物件。

但這也不是絕對的,有一些jvm對integer物件的儲存會做些優化,所以會出現上面結果。所以我們要避免這種情況的發生,用equals()方法來比較integer的大小。

java執行緒系列 java5中的執行緒池

public class threadpoolstest threadpools.shutdown 停掉執行緒池 定時器,隔10s後執行 executors.newscheduledthreadpool 3 schedule new runnable 10,timeunit.seconds 定時器,...

警惕 特徵工程 中的陷阱

特徵工程 feature engineering 是機器學習中的重要環節。在傳統的專案中,百分之七十以上的時間都花在了預處理資料上 data preprocessing 其中特徵工程消耗了很多時間。一般來說,特徵工程涵蓋的內容非常廣泛,包括從缺失值補全 特徵選擇 維度壓縮,到對輸入資料的範圍進行變換...

Java5新特性 靜態匯入

今天在看書的時候,看見了 靜態匯入 的這個概念,上網一查才知道是jdk5.0的新特性,真是孤陋寡聞了,所以好好學習了一下。靜態匯入,在你自己的類中使用靜態匯入,可以讓你使用其它類中定義的類方法和類變數,而且這些類方法和類變數就像在本地定義的一樣。也就是說,靜態匯入允許您在呼叫其它類中定義的靜態成員時...