日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
JVM優(yōu)化引起的邏輯錯(cuò)誤
 
 
 
  1. public class Test2 { 
  2.     public static void main(String[] args) { 
  3.        Integer i1 = 100; 
  4.         Integer i2 = 100; 
  5.         if (i1 == i2 ) 
  6.         System.out.println("相等!"); 
  7.         else 
  8.         System.out.println("不相等!"); 
  9.     } 
  10. }  

如上代碼,你覺得會(huì)輸出什么呢?

結(jié)果是“相等”,哈哈,對象的比較,指向不同的地址,怎么會(huì)相等?

如果修改數(shù)值為256,奇跡出現(xiàn)了,輸出“不相等”

這是因?yàn)閖vm在自動(dòng)裝箱的過程中進(jìn)行了優(yōu)化代碼,在自動(dòng)裝箱時(shí)對于值從–128到127之間的值,使用一個(gè)實(shí)例。

這樣就造成了邏輯錯(cuò)誤哦。防不勝防??!

可靠一點(diǎn),還是使用如下的初始化對象方法,這樣,結(jié)果就一直符合邏輯了。

 
 
 
  1. public class Test2 { 
  2.     public static void main(String[] args) { 
  3.        Integer i1 = new Integer(100); 
  4.         Integer i2 = new Integer(100); 
  5.         if (i1 == i2 ) 
  6.         System.out.println("相等!"); 
  7.         else 
  8.         System.out.println("不相等!"); 
  9.     } 
  10. }  

所以如果進(jìn)行java開發(fā)久了,你就會(huì)比較頭疼那些看上去完全正常的邏輯,在編譯后跑出詭異的結(jié)果來,這完全靠你對jvm的經(jīng)驗(yàn)積累哦!


標(biāo)題名稱:JVM優(yōu)化引起的邏輯錯(cuò)誤
文章起源:http://www.5511xx.com/article/dhsidod.html