int Integer 比较 有一个问题 数值比较 数值比较
public static void main(String [] s){
Integer b1 = 100;
Integer b2 = 100;
System.out.println(b1==b2);//true -128到127之间的数 会用缓存。 同一个对象
Integer b3 = 128;
Integer b4 = 128;
System.out.println(b3==b4);//出售false -128到127之间的数 会用缓存。 超过了 不是一个对象
Integer b1 = new Integer(100);
Integer b2 = new Integer(100);
System.out.println(b1==b2);//出售false 对比的是内存地址
Integer b3 = 128;
Integer b4 = 128;
System.out.println(b3==b4);//出售false -128到127之间的数 会用缓存。
System.out.println(b3.equals(500));
//建议使用 .equals 对比。
// 或者使用int
int a = b1.intValue();
}
Integer b1 = new Integer(2);
System.out.println(b1==1); // false
System.out.println(b1==2); // true
System.out.println(b1==3); // false
代码行为解释
对象创建:new Integer(2)显式创建了一个新的Integer对象,值为2
比较操作:当Integer对象与int基本类型使用==比较时,会发生自动拆箱:
Java会自动调用b1.intValue()将Integer对象转换为int值
然后比较的是两个int基本类型的值是否相等
输出结果分析:
b1==1:比较2和1,结果为false
b1==2:比较2和2,结果为true
b1==3:比较2和3,结果为false自动拆箱机制:当使用>=比较Integer对象时,Java会自动调用intValue()方法进行拆箱(即转换为基本类型int), 然后比较数值大小。 因此if(xcxUser.getDongjifen() >= config.getDongjie())本质是比较两个int值。
站长微信:xiaomao0055
站长QQ:14496453