ts158.tk,赵作斌,王若葳下载
public void method1() { integer i = new integer(1); integer j = new integer(1); system.out.println(i == j); integer m = 1; integer n = 1; system.out.println(m == n);//true integer x = 128; integer y = 128; system.out.println(x == y);//false }
如题,当数值大于等于128时,创建的俩个对象地址就不一样了,这个原因还得看integer的源码
1 public static integer valueof(int i) { 2 if (i >= integercache.low && i <= integercache.high)//-128~127 3 return integercache.cache[i + (-integercache.low)]; 4 return new integer(i); 5 }
这个integercache 数组是包装类自己创建的缓存数组,里面存放着【-128,127】的整数,当数值在这个范围时,会从这个数组中直接取值,当数值不在这个范围时,就会新建对象,所以地址就会不一样
-------------------------------------------------
那么double类型的呢
public static void main(string[] args) { double a = 2.0; double b = 2.0; double c = 2.0; double d = 2.0; system.out.println(a == b);//true system.out.println(c == d);//false system.out.println(a == d);//true }
进源码
public static double valueof (double d){ return new double (d) ; }
显然,double没有integer花里胡哨,只有调用就新建一个对象
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
浅析我对 String、StringBuilder、StringBuffer 的理解
使用IDEA搭建SSM框架的详细教程(spring + springMVC +MyBatis)
Springboot整合freemarker 404问题解决方案
引入mybatis-plus报 Invalid bound statement错误问题的解决方法
网友评论