【发布时间】:2020-12-19 16:58:27
【问题描述】:
将包装类型(Integer)的对象转换为其对应的原始(int)值称为拆箱。当包装类的对象为:
- 作为参数传递给需要相应原始类型值的方法。
- 分配给对应原始类型的变量。
为什么在这种情况下会发生拆箱?
char l = 0;
int arr[] = new int[]{1,2,3};
System.out.println(arr[new Integer(1)]);
在这种情况下,哪一种情况会发生?是否有一种底层方法可以控制数组中的元素访问?还是 [] 暗示某种变量?
【问题讨论】:
-
我想我可能有我的问题的答案。那么,每当我们使用 [
] 时都会调用 get() 吗? docs.oracle.com/javase/8/docs/api/java/lang/reflect/… -
是的,数组索引在 Java 中是
int。 -
您正在链接到教程并从中引用,而不是 JLS。虽然教程中的内容是真实的,但它并不能说明全部真相。
-
这能回答你的问题吗? Can you index an array with a long int?
-
答案可以在JLS, §15.10.3找到:“索引表达式经过一元数字提升(§5.6)。提升的类型必须是int,否则会出现编译时错误。 "
标签: java arrays indexing jls unboxing