你們能夠看一下下面這個java程序的運行結果java
int k = 1; int l = 1; System.out.println(k == l); int a = 128; int b = 128; System.out.println(a == b); Integer i = 1; Integer j = 1; System.out.println(i == j); Integer m = 128; Integer n = 128; System.out.println(m == n);
運行結果爲緩存
true |
---|
true |
true |
false |
爲何或形成這種狀況呢,這就要從integer i =1的原理提及了,它至關於執行了integer i = Integer.valueOf(1);而在java的文檔中咱們能夠看到以下解釋
「此方法將始終緩存」-128到127(含)範圍的值」,這句話的意思是在第一次integer i = 1時,1這個數字就被存到了緩存中,再次執行integer j = 1時,就會直接從緩存中取。因此i == j 是true。而m是128,將再也不進行緩存,m == n就是false。學習
我是一個正在偷偷努力學習java的大胖子,有任何問題你們均可以發在個人我的公衆號上邊,我也會盡可能幫你們解決,固然,我也只是一個正在學習java的人,並不能保證「每一個」問題都能回答上來,可是咱們能夠一塊兒交流。
還有個人我的公衆號會不定時更新個人java學習之路,你們若是也在學習java能夠在公衆號上邊與我交流哦。
code