Java 中自动装箱整数对象的比较\n
当我们将 int 分配给 Integer 对象时,它首先转换为 Integer 对象,然后分配。此过程称为自动装箱。但在使用 == 运算符比较此类对象时,您应考虑某些事项。请首先参阅下面的示例。
示例
public class Tester {
public static void main(String[] args) {
Integer i1 = new Integer(100);
Integer i2 = 100;
//Scenario 1:
System.out.println("Scenario 1: " + (i1 == i2));
Integer i3 = 100;
Integer i4 = 100;
//Scenario 2:
System.out.println("Scenario 2: " + (i3 == i4));
Integer i5 = 200;
Integer i6 = 200;
//Scenario 3:
System.out.println("Scenario 3: " + (i5 == i6));
Integer i7 = new Integer(100);
Integer i8 = new Integer(100);
//Scenario 4:
System.out.println("Scenario 4: " + (i7 == i8));
}
}输出
Scenario 1: false Scenario 2: true Scenario 3: false Scenario 4: false
方案 1 - 创建两个 Integer 对象。第二个是因为自动装箱。== 运算符返回 false。
方案 2 - 自动装箱后只创建一个对象,并将其缓存起来,因为如果值为 -127 到 127,Java 会缓存对象。== 运算符返回 true。
方案 3 - 由于自动装箱创建了两个 Integer 对象,并且未进行缓存。== 运算符返回 false。
方案 4 - 创建两个 Integer 对象。== 运算符返回 false。
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP