版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Chengliangyao/article/details/84196245
进行如下测试:
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