如何在Java中初始化数组?

cha*_*tty 407 java arrays initialization

我正在初始化这样的数组数据:

public class Array {

    int data[] = new int[10]; 
    /** Creates a new instance of Array */
    public Array() {
        data[10] = {10,20,30,40,50,60,71,80,90,91};
    }     
}
Run Code Online (Sandbox Code Playgroud)

NetBeans指向该行的错误

data[10] = {10,20,30,40,50,60,71,80,90,91};
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

Pra*_*rav 602

data[10] = {10,20,30,40,50,60,71,80,90,91};
Run Code Online (Sandbox Code Playgroud)

以上不正确(语法错误).这意味着您正在分配一个data[10]只能容纳元素的数组.

如果要初始化数组,请尝试使用Array Initializer:

int[] data = {10,20,30,40,50,60,71,80,90,91};

// or

int[] data;
data = new int[] {10,20,30,40,50,60,71,80,90,91};
Run Code Online (Sandbox Code Playgroud)

注意两个声明之间的区别.在为声明的变量分配新数组时,new必须使用.

即使您更正了语法,访问data[10]仍然是不正确的(您只能访问data[0],data[9]因为Java中的数组索引是从0开始的).访问data[10]将抛出ArrayIndexOutOfBoundsException.

  • @Hengameh:默认情况下初始化为 0。见 http://stackoverflow.com/a/2154340/1000655 (3认同)
  • 实际上,不正确的主要原因是语法错误!仅当语法可接受时才发生AIOB。 (2认同)

Dea*_*vey 37

尝试 data = new int[] {10,20,30,40,50,60,71,80,90,91 };


Ber*_*rez 26

当你创建一个大小为10的数组时,它分配了10个插槽但是从0到9.这个for循环可能会帮助你看到更好一点.

public class Array {
    int[] data = new int[10]; 
    /** Creates a new instance of an int Array */
    public Array() {
        for(int i = 0; i < data.length; i++) {
            data[i] = i*10;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 14

你可以做:

int[] data = {10,20,30,40,50,60,71,80,90,91};
Run Code Online (Sandbox Code Playgroud)

  • 我想知道除了 5 年前接受的答案之外,这还增加了什么价值。 (4认同)

Vin*_*yak 10

句法

 Datatype[] variable = new Datatype[] { value1,value2.... }

 Datatype variable[]  = new Datatype[] { value1,value2.... }
Run Code Online (Sandbox Code Playgroud)

示例:

int [] points = new int[]{ 1,2,3,4 };
Run Code Online (Sandbox Code Playgroud)


Shi*_*ari 8

而不是学习非官方网站从oracle网站学习

链接如下:点击这里

*您可以找到初始化以及声明和完整描述*

int n; // size of array here 10
int[] a = new int[n];
for (int i = 0; i < a.length; i++)
{
    a[i] = Integer.parseInt(s.nextLine()); // using Scanner class
}
Run Code Online (Sandbox Code Playgroud)

输入:10 //阵列大小10 20 30 40 50 60 71 80 90 91

显示数据:

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

输出: 10 20 30 40 50 60 71 80 90 91