2015-11-08 118 views
-4

我试图用for循环初始化Arrays。但我无法投射或转换intArrays如何在java中声明和初始化数组

import java.util.Arrays; 

public class InitalizeArrays { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     int[] arr = {1, 2, 5, 8}; //this one is fine    
     Arrays[] arr2 = new Arrays[5]; 

     for(int i=0; i<=arr2.length; i++) 
     { 
      arr2[i]=i; //How to initalize Arrays 
      System.out.println(arr2[i]); 
     } 
    } 
} 

我在这里错过了什么?

+0

你想做什么?你想要arr2包含什么? –

+0

@保罗,我想初始化它有一些价值....... –

+1

如果你想用数字填充它应该是一个int []就像arr。我不明白你为什么把它变成阵列[]。 –

回答

1

数组的有效索引是0array.length - 1(和它的int秒(不Arrays数组 - 一个实用工具类),你需要改变

Arrays[] arr2 = new Arrays[5]; 
for(int i=0; i<=arr2.length; i++) 

喜欢的东西

int[] arr2 = new int[5]; // <-- to store an int. 
for(int i=0; i<arr.length; i++) // <-- or arr2.length - 1 
{ 
    arr2[i]=arr[i]; // <-- to copy arr. 
} 

也许你想使用Arrays.copyOf(int[])

int[] arr2 = Arrays.copyOf(arr, arr.length + 1); 
// no for loop to copy needed. 
+0

这将是运行时异常,比如说ArrayIndexOutOfBoundsException。我在这里面临编译时错误。 –

+0

编译异常是因为“int”不是实用程序类“Arrays”的实例。 –

+0

完美我同意。如何解决它。 –

3

Arrays不是您应该使用的对象......它只是一组处理数组的辅助方法(注意小写“a”)。这里的文档:https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html

+0

数组中的数组,因为它扩展了Object类。 public class Arrays extends Object。但我无法看到这个文件的构造。所以看起来我们不能初始化它。 –

+1

我从来没有说过它不是一个对象......我说它是“不是你应该使用的对象”。它只包含处理数组的静态辅助方法。 – Buddy

0
Arrays[] arr2 = new Arrays[5]; 

int[] arr2 = new int[5]; 

这就是全部进行更换。

确定不会有任何编译时错误,但会有运行时错误 ,因为Java不会像int []数组那样处理数组[]。 它将被视为与整型数组无关的另一种数据类型。