使用 Java 的数组中元素的索引
Java 中的以下代码返回 -1。我以为它应该返回3。
int[] array = {1,2,3,4,5,6};
System.out.println(Arrays.asList(array).indexOf(4));
你能帮我了解这个函数是如何工作的吗?
谢谢
Java 中的以下代码返回 -1。我以为它应该返回3。
int[] array = {1,2,3,4,5,6};
System.out.println(Arrays.asList(array).indexOf(4));
你能帮我了解这个函数是如何工作的吗?
谢谢
在 Java 5 之前,用于接受 .当泛型和 varargs 被引入到语言中时,它被更改为Arrays.asList
Object[]
public static <T> List<T> asList(T... arr)
在您的示例中,不能因为 是基元类型。不幸的是,签名与等于 相反,这是一种引用类型。结果是,您最终会得到一个包含数组的数组,而不是一个整数。T
int
int
T
int[]
List
List
在 Java 4 中,您的代码不会编译,因为 an 不是 .不编译比产生奇怪的结果更可取,在有效的Java中,Josh Bloch说改造成varargs方法是一个错误。int[]
Object[]
asList
Arrays.asList
需要一个(或更多)对象。数组 () 是唯一的对象,因此调用该方法将创建一个仅包含一个对象的列表,即数组。array
调用列表将返回 -1,因为永远不会找到,因为列表包含数组对象,而不是数组包含的数据列表。indexOf
4