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

 我来答
第一碗羊杂割
推荐于2017-10-04 · TA获得超过6145个赞
知道大有可为答主
回答量:1107
采纳率:80%
帮助的人:562万
展开全部

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

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. 类的属性在定义的时候直接赋值算是方法外更改成员吗? 

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

    谢谢

追答

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


llei32wang
2015-07-24 · TA获得超过2736个赞
知道大有可为答主
回答量:1478
采纳率:60%
帮助的人:1404万
展开全部
声明没有错的,但是给数组赋值是必须在{}内的
比如
String[] a=new String[1];
{
a[0]=new String("a");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式