1. 程式人生 > >Java Integer中 parseInt 和 valueOf 的區別

Java Integer中 parseInt 和 valueOf 的區別

進行如下測試:

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