新聞中心
這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)JVM優(yōu)化引起的邏輯錯誤怎么解決,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計制作、成都網(wǎng)站制作、燈塔網(wǎng)絡(luò)推廣、微信小程序開發(fā)、燈塔網(wǎng)絡(luò)營銷、燈塔企業(yè)策劃、燈塔品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供燈塔建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com
public class Test2 { public static void main(String[] args) { Integer i1 = 100; Integer i2 = 100; if (i1 == i2 ) System.out.println("相等!"); else System.out.println("不相等!"); } }
如上代碼,你覺得會輸出什么呢?
結(jié)果是“相等”,哈哈,對象的比較,指向不同的地址,怎么會相等?
如果修改數(shù)值為256,奇跡出現(xiàn)了,輸出“不相等”
這是因為jvm在自動裝箱的過程中進(jìn)行了優(yōu)化代碼,在自動裝箱時對于值從–128到127之間的值,使用一個實例。
這樣就造成了邏輯錯誤哦。防不勝防啊!
可靠一點,還是使用如下的初始化對象方法,這樣,結(jié)果就一直符合邏輯了。
public class Test2 { public static void main(String[] args) { Integer i1 = new Integer(100); Integer i2 = new Integer(100); if (i1 == i2 ) System.out.println("相等!"); else System.out.println("不相等!"); } }
如果進(jìn)行java開發(fā)久了,你就會比較頭疼那些看上去完全正常的邏輯,在編譯后跑出詭異的結(jié)果來,這完全靠你對jvm的經(jīng)驗積累哦!
上述就是小編為大家分享的JVM優(yōu)化引起的邏輯錯誤怎么解決了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當(dāng)前文章:JVM優(yōu)化引起的邏輯錯誤怎么解決
轉(zhuǎn)載來于:http://biofuelwatch.net/article/jigips.html