java数值类型分为基本类型和引用类型,这里以int和Integer类型为例,分析一下在开发过程中遇到的坑
并给出了如何规避的方案, 在很多开发场景中我们一般会将入参设置为引用类型譬如Integer,在方法内部可
能会出现比较情况,譬如一个代表order_type的字段,可能会和我们定义的若干个常量比较,这样如果定义的
常量也是Integer,就有可能产生bug,根源是Integer变量的存储的是对应数值的引用,所以两个代表相同数据的
变量可能引用并不一致,所以导致无法匹配,下面举个例子
//超出缓存范围(-128 ~ 127), 这个如何解决呢,使用equals方法
Integer i = 1000;
Integer j = 1000;
System.out.println(i == j);
//一个基本类型一个引用类型 == 判断是按照基本类型的进行转换判定
int i1 = 1000;
Integer j1 = 1000;
System.out.println(j1==i1);
//缓存范围(-128 ~ 127)
Integer i2 = 100;
Integer j2 = 100;
System.out.println(i2==j2);
结果 : false true true
结果的原因我写注释了,不再深述,只是单独列出来,开发一定注意细节和底层实现原理