ArrayList toArray()转换不允许你使用lenth()?

use*_*084 -1 java collections arraylist

import java.util.*;
class Ball{
    public static void main(String args[])
    {
        ArrayList al = new ArrayList();
        al.add(new Integer(1));
        al.add(new Integer(2));
        al.add(new Integer(3));
        Object a[]= al.toArray();

        for (int i=0; i<a.length; i++)
        {
            System.out.println("Contents are  :"+ a[i]);
        }
}}
Run Code Online (Sandbox Code Playgroud)

所以我创建了一个ArrayList并添加了几个元素.然后用toArray方法得到对象数组a.但是,如果我使用i<a.length()而不是i<a.length,我会收到错误.我不明白的是,如果length()是一种方法,那是length什么?

其次为什么我不能使用for循环输出ArrayList元素?

for (int i=0; i<al.length(); i++)
        {
            System.out.println("Contents are  :"+ al[i]);
        }
Run Code Online (Sandbox Code Playgroud)

(在这里使用al.length()以及al [i]给出错误)

Lui*_*oza 6

首先,数组有一个length字段finalint类型.数组没有length方法.

这在Java语言规范中有说明.第10章数组.(强调我的):

10.2.数组变量

创建数组对象后,其长度永远不会更改.要使数组变量引用不同长度的数组,必须为该变量分配对不同数组的引用.

10.3.数组创建

数组创建表达式指定至少一个嵌套级别的元素类型,嵌套数组的级别数和数组的长度.数组的长度可用作final实例变量length.

要访问数组的元素,请使用[index]:

System.out.println(a[index]);
Run Code Online (Sandbox Code Playgroud)

第二,ArrayList没有length方法,但是size.

要访问ArrayListby by 的元素,请使用以下get方法:

System.out.println(al.get(index));
Run Code Online (Sandbox Code Playgroud)

请注意,a ArrayList 不是数组,它是一个使用数组作为容器来保存它将存储的元素的类,如果它需要包含更多元素,它将添加,删除,搜索和创建新数组.

要遍历数组的所有元素或List(由实现的接口ArrayList),最好使用增强for循环:

for (Object o : a) {
    System.out.println(o);
}
for (Object o : al) {
    System.out.println(o);
}
Run Code Online (Sandbox Code Playgroud)