java 类中的定义数组后赋值报错

public class Deom {

int a[]=new int[100];

a[0]=1234;
a[1]=1234;
a[2]=1234;

}

定义一个Deom类,在类中定义一个长度为100的数组,后赋值报错,为什么?

改成如下就正确且可使用,为什么?

public class Deom {

int a[]=new int[100];
{
a[0]=1234;
a[1]=1234;
a[2]=1234;
}
}

public class Deom {

int a[]=new int[100];
{
a[0]=1234;
a[1]=1234;
a[2]=1234;
}
}

这种写法是java的静态块,与写在构造中差不多,但静态块会在构造执行前执行。静态块只要写在变量定义的一后面就可以,与你变量的定义没有关系。
// 静态块示例1
public class Deom {

int a[]=new int[100];
int b[]=new int[100];

{
a[0]=1234;
a[1]=1234;
a[2]=1234;
}
}

//静态块示例2
public class TimeView
{
int a[] = new int[10];

public TimeView() {
System.out.println("a[0] = " + a[0]);
}

{
a[0] = 1;
}
}
在示例2中会打印出
a[0] = 1
,你可以试试一下。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-08-13
你放的位置不对嘛!
你放在一个声明字段的地方,这个地方要么不赋值,要么在声明的同时就赋值,单独拿出来赋值就需要放到方法或是块中了
你下面就是放到一个块中,这个块会在调用构造方法前被执行
第2个回答  2009-08-13
该段代码没有在任何方法体内,是永远不会执行的,所以java在编译的时候就提示出错。不光数组,就是其它的任何类型也不能这样赋值。
a[0]=1234;
a[1]=1234;
a[2]=1234;

而下面这段代码在声明的地方赋值:java 会再初始化类的时候分配地址,所以可以执行。
int a[]=new int[100];
{
a[0]=1234;
a[1]=1234;
a[2]=1234;
}
第3个回答  2016-05-25
简单来说,就是变量赋值不再方法内,而直接在类里面,类中声明的叫实例变量,一般在方法中使用.
第4个回答  2020-08-14
单纯的赋值要放到代码块里,直接放到class
f {……}里是错的。
相似回答