java 这样在一个类中定义一个对象数组为什么会出错

如题所述

首先纠正你一个错误,第二句(第二张图第六行)应该是

a[0] = new Student();

而不是

Student[0] = new Student();

因为你定义的数组名字叫 a 而不是 Student。


但是,你的主要错误并不只在这里。而是因为在 Java 中,在一个类的方法外只能定义这个类的成员及其他方法,而不能进行任何对这个类成员的操作,包括修改成员。这里你使用

Student[] a = new Student[3];

来定义了一个长度为 3 的数组 a 作为 www 类的成员,这是可以的。但是随后你使用

a[0] = new Student();

初始化 a 中的对象,这就相当于在一个方法的外部来更改类的成员。这种操作是不允许的。所以你有如下两种改法:


第一种是创建一个方法(比如说类的构造函数或者 main 函数),然后把第二句放在这个方法里。

public class Www {

    Student[] a = new Student[3];
    
    public Www() {
        a[0] = new Student();
    }
    
}

第二种是将第二句用大括号括起来。

public class Www {

    Student[] a = new Student[3];
    {
        a[0] = new Student();
    }
    
}

追问

真是谢谢 我还想问一下

    类的属性在定义的时候直接赋值算是方法外更改成员吗? 

    第二种方法的大括号是什么意思,作用是什么?

    谢谢

追答

超出字数限制,只能截图给你了。


温馨提示:内容为网友见解,仅供参考
第1个回答  2015-07-24
声明没有错的,但是给数组赋值是必须在{}内的
比如
String[] a=new String[1];
{
a[0]=new String("a");
}