如何在Java中初始化数组?

如何在Java中初始化数组?,java,arrays,initialization,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}; } } NetBeans指向此行的错误: data[10] = {10,20,30,40,50,60,71,

我正在初始化一个数组,如下所示:

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};
    }     
}
NetBeans指向此行的错误:

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

如何解决这个问题?

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

您正在尝试将数组的第10个元素设置为数组try

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

以上内容不正确(语法错误)。这意味着您正在为
数据[10]
分配一个数组,该数组只能容纳一个元素

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

请注意这两个声明之间的差异。将新数组分配给声明的变量时,必须使用
new


即使您更正了语法,访问
数据[10]
仍然是不正确的(您只能访问
数据[0]
数据[9]
,因为Java中的数组索引是基于0的)。访问
数据[10]
将抛出一个错误。

您无法初始化这样的数组。除了其他人的建议外,您还可以:

data[0] = 10;
data[1] = 20;
...
data[9] = 91;

当您创建一个大小为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;
        }
    }
}
公共类数组{
int[]数据=新的int[10];
/**创建int数组的新实例*/
公共数组(){
对于(int i=0;i
语法

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

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

int [] points = new int[]{ 1,2,3,4 };
你可以做:

int[] data = {10,20,30,40,50,60,71,80,90,91};
也许这会奏效:

public class Array {

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

不学习联合国官方网站,而是学习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
}
int n;//这里的数组大小为10
int[]a=新的int[n];
for(int i=0;i
输入: 10//数组大小 10 20 30 40 50 60 71 80 90 91

显示数据:

for (int i = 0; i < a.length; i++) 
{
    System.out.println(a[i] + " ");
}
for(int i=0;i
输出: 10 20 30 40 50 60 71 80 90 91如果要初始化构造函数中的数组, 不能像这样使用数组初始值设定项。

把它改成

data = new int[] {10,20,30,40,50,60,71,80,90,91};
您不必使用
data[10]=newint[]{10,…,91}
只需使用
int[]数据声明属性/字段并像上面那样初始化它。
代码的更正版本如下所示:

public class Array {

    int[] data;

    public Array() {
        data = new int[] {10,20,30,40,50,60,71,80,90,91};
    }

}

正如你看到的,括号是空的。不需要告诉括号之间的大小,因为初始化及其大小是由花括号之间的元素计数指定的。

+1。你有一个额外的开口支撑。也可以写:数据[0]=10;数据[1]=20。。。。在int data[]=new int[10]之后,但是它的代码太多,最终会做同样的事情。实际上,它不正确的主要原因是它是一个语法错误!AIOB只有在语法可以接受的情况下才会发生。如果我声明这样一个数组:
publicstaticvoidproduct(int[]array){int[]productArray=newint[array.length];
并且要将
productArray
的所有值设置为零,您能帮助我吗?(我想我应该写一个循环,把所有的值都设置为零,有没有更好的方法呢?@Hengameh:它默认初始化为0。你可以用“int data[]=new int[10]”替换“int data[]”。你在浪费内存。这与问题有什么不同?请扩展你的答案!构造函数中不允许使用数组初始值设定项!!!!在发布建议之前,你至少应该测试一下你的建议…我想知道这在5年前接受的答案上增加了什么价值。OP显然是在尝试分配一组值一次也没有。你的回答不承认这个事实。
data= {10,20,30,40,50,60,71,80,90,91};
data = new int[] {10,20,30,40,50,60,71,80,90,91};
public class Array {

    int[] data;

    public Array() {
        data = new int[] {10,20,30,40,50,60,71,80,90,91};
    }

}