import java.util.ArrayList;
import java.util.List;
public class Unboxing {
public static void main(String[] args) {
Integer i = new Integer(-8);
// 1. Unboxing through method invocation
int absVal = absoluteValue(i);
System.out.println("absolute value of " + i + " = " + absVal);
List<Double> ld = new ArrayList<>();
ld.add(3.1416); // Π is autoboxed through method invocation.
// 2. Unboxing through assignment
double pi = ld.get(0);
System.out.println("pi = " + pi);
}
public static int absoluteValue(int i) {
return (i < 0) ? -i : i;
}
}
在 JDK 5 之前它是Integer i = new Integer(-8);
但是在 JDK 5 中他们做到了,Integer i = -8;
为什么我什至在文档中看到这样一个例子
表达式不等价
将分配
i一个缓存实例-8,而将创建一个新的。
尽管如此,这两个选项都非常有效,只是它们的比较不会给出
true但是你仍然不能指望这样的比较,因为不是所有的实例
Integer都被缓存了,并与帮助进行比较
equals正常工作。