20 java variables variable-assignment
如果我尝试为类中的变量赋值,但在方法之外我会收到错误.
class one{
Integer b;
b=Integer.valueOf(2);
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我在创建过程中初始化它,它就可以工作.
class one{
Integer b=Integer.valueOf(2);
}
Run Code Online (Sandbox Code Playgroud)
在方法内部,它适用于两种情况.
Pet*_*rey 25
你需要做的
class one{
Integer b;
{
b=Integer.valueOf(2);
}
}
Run Code Online (Sandbox Code Playgroud)
因为语句必须出现在代码块中.
在这种情况下,块是一个initailiser块,它被添加到每个构造函数(在这种情况下是默认构造函数).它super()在任何构造函数中的主代码块之前和之前运行之后运行.
顺便说一句:您可以使用静态初始化块,static { }在初始化类时调用该块.
例如
class one{
static final Integer b;
static {
b=Integer.valueOf(2);
}
}
Run Code Online (Sandbox Code Playgroud)
Raz*_*van 13
因为赋值是语句,只允许在代码块内部使用语句(方法,构造函数,静态初始化器等)
除了这些之外,只允许声明.
这个 :
class one{
Integer b=Integer.valueOf(2);
}
Run Code Online (Sandbox Code Playgroud)
是一个带初始化器的声明.这就是为什么被接受的原因