当我在班级写这些行时
int a;
a=5;
它给了我错误:"标识符预期"
当m将其声明为局部变量并且写得与
完全相同时void m1() {
int a;
a=5;
}
没有错误。为什么?
答案 0 :(得分:1)
当你在课堂上这样做时,你可以在一个语句中结合声明和作业,例如:
class A {
int a = 5;
}
否则,您必须使用块(构造函数,方法,初始化块)包装赋值。例如:
class A {
int a;
public A() { a = 5; } //via constructor
void setA() { a = 5; } //via method
{ a = 5; } //via initializer block
}
答案 1 :(得分:0)
将值赋给变量称为表达式。我们无法在类中编写任何表达式。我们可以在方法体中做同样的事情。基本上,当定义范围并因此在方法中允许时,我们可以正确表达式。
答案 2 :(得分:0)
以下原因:
int a=5;
在类级别声明的在以下情况下不会产生编译时错误:
void m1() {
int a;
a=5;
}
声明是因为m1()
有自己的范围。
对于实例,如果不声明和访问变量a
,则会引用类的字段,在本地声明a
时,您总是引用在a
内声明的那个。
PS:您无法在课程级别执行以下操作:
int a;
a=5;
你必须:
int a=5;
答案 3 :(得分:0)
您无法在类中编写代码,只能在方法,构造函数或初始化器{}块中编写代码。这就是你得到语法错误的原因。 可能你想使用这样的初始化程序块:
class my{
int a;
{
a=1;
}
}