根据java教程
将 Package 类型(整数)的对象转换为其相应的基元(int)值称为取消装箱。当 Package 类的对象是以下对象时,java编译器将应用取消装箱:
作为参数传递给需要相应基元类型的值的方法。
赋值给相应基元类型的变量。
在这种情况下为什么要拆箱?
char l = 0;
int arr[] = new int[]{1,2,3};
System.out.println(arr[new Integer(1)]);
在这个场景中,这两种情况发生在哪里?数组中是否有控制元素访问的底层方法?或者[]是否意味着某种变量?
3条答案
按热度按时间1l5u6lss1#
在
(arr[new Integer(1)]
Package 整数被转换为基元类型,因为它被用作数组索引。r3i60tvu2#
拆箱发生在第三行
int arr[] = int[]{1, 2, 3};
sg3maiej3#
jls 15,§15.10.3这一点非常清楚:
...
索引表达式进行一元数字提升(§5.6). 升级的类型必须是
int
,或发生编译时错误。...
类似的段落可以在旧的JLSE中找到,例如jls 8,§15.10.3.