通常,编译器会生成执行装箱和拆箱的代码.但是,如果不需要盒装值,编译器会是什么?(Oracle标准)编译器是否足够智能以优化它?
看看这个方法:
public static void requireInRange(int index, Object[] array) {
if(index < 0 || index >= array.length)
throw new IndexOutOfBoundsException();
}
Run Code Online (Sandbox Code Playgroud)
唯一相关的信息是array.length
,例如,将数组的每个值包装起来是没用的.喜欢这段代码:
int[] anArray = {3, 4, 2};
requireInRange(3, anArray);
Run Code Online (Sandbox Code Playgroud)
编译器是否会实际插入用于装箱数组的每个值的代码?