Java Integer中 parseInt 和 valueOf 的區別
阿新 • • 發佈:2018-12-22
進行如下測試:
1、System.out.println(127 == 127); 2、System.out.println(128 == 128); 3、System.out.println(new Integer(127) == new Integer(127)); 4、System.out.println(Integer.parseInt("1234") == Integer.parseInt("1234")); 5、System.out.println(Integer.valueOf("123") == Integer.valueOf("123")); 6、System.out.println(Integer.valueOf("156") == Integer.valueOf("156")); 7、System.out.println(Integer.parseInt("123") == Integer.valueOf("123"));
得到的結果:
1、true
2、true
3、false
4、true
5、true
6、false
7、true
== 是物件比較,equals是值比較,但是對於int等基本值型別,==也是值比較
paseInt每次構造一個常量值,所以第4個是true
valueOf是物件比較,預設值會在-128-127之間返回快取中已經存在的已有物件,所以5是true,而6超出了範圍,都是新建物件,結果為false
如果parseInt和valueOf作比較,只要其中一個是值,整體的比較就是一個值比較,所以7是true