繁体   English   中英

为什么 arr[6] 在此代码中返回 null 值?

[英]Why is arr[6] returning a null value in this code?

ArrayList<String> list1=new ArrayList<String>(),list2 = new ArrayList<String>(),list3= new ArrayList<String>();
list1.add("Hey");
list1.add("there");
list1.add(0, "knock");
list1.add(0, "knock");
list2.addAll(list1);
list3.add("Vasvi");
list3.add(0, "I'm");
list2.addAll(2, list3);
        
String[] arr= new String[8];
        
        
arr[6]="Who're";
arr[7]="You?";
System.out.println("arr[6]="+arr[6]);
        
arr=list2.toArray(arr);
System.out.println("arr[6]="+arr[6]);
        
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}

Output:

arr[6]=谁
arr[6]=空
敲敲
我是
瓦斯维

那里
null
你?

一旦调用 toArray(arr) 方法,arr[6] 就变成 null。 我无法理解为什么?

因为toArray(T[] a)实现有语句

if (a.length > size)
    a[size] = null;

就是这种情况,因为size是 6 而a.length是 8,因此a[6] = null这正是您观察到的。

文档解释:

如果列表适合指定的数组并有剩余空间(即,数组的元素比列表多),则数组中紧跟集合末尾的元素设置为null 当调用者知道列表不包含任何 null 元素时,这对确定列表的长度很有用。)

无需查看实现; 看看文档就足够了

如果列表适合指定的数组并有剩余空间(即,数组的元素多于列表),则数组中紧跟集合末尾的元素设置为 null。

了解toArray(T[] a)如何工作的最好方法是花点时间阅读javadocs

如果列表适合指定的数组并有剩余空间(即,数组的元素多于列表),则数组中紧随列表末尾的元素设置为 null (仅当调用者知道列表不包含任何 null 元素时,这对确定列表的长度很有用。)

在您的示例数组中有 8 个元素并且仅列出 6 个。因为第 6 个元素是null

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM