ddf*_*fal 1 java variables initialization instance
嗨,我在java中初始化有问题,下面的代码给我编译错误:expected instanceInt = 100; 但我已经宣布了.如果这些东西与堆栈和堆的东西有关,请用简单的术语解释,我是java的新手,我对这些领域没有高级知识
public class Init {
int instanceInt;
instanceInt = 100;
public static void main(String[] args) {
int localInt;
u = 9000;
}
}
Run Code Online (Sandbox Code Playgroud)
你不能在班级中间使用语句.它必须与您的声明在一个区块或同一行.
做你想做的通常的方法是:
声明期间的初始化
public class MyClass{
private int i = 0;
}
Run Code Online (Sandbox Code Playgroud)
通常,如果要为字段定义默认值,则通常是个好主意.
构造函数块中的初始化
public class MyClass{
private int i;
public MyClass(){
this.i = 0;
}
}
Run Code Online (Sandbox Code Playgroud)
如果要在字段初始化期间使用某些逻辑(if/loops),可以使用此块.它的问题是你的构造函数会相互调用一个,或者它们都具有基本相同的内容.
在你的情况下,我认为这是最好的方式.
方法块中的初始化
public class MyClass{
private int i;
public void setI(int i){
this.i = i;
}
}
Run Code Online (Sandbox Code Playgroud)
它不是真正的初始化,但您可以随时设置您的值.
实例初始化程序块中的初始化
public class MyClass{
private int i;
{
i = 0;
}
}
Run Code Online (Sandbox Code Playgroud)
当构造函数不够时使用这种方式(请参阅构造函数块的注释),但通常开发人员倾向于避免使用此形式.
资源:
在同一主题上:
奖金:
这段代码是什么?
public class MyClass {
public MyClass() {
System.out.println("1 - Constructor with no parameters");
}
{
System.out.println("2 - Initializer block");
}
public MyClass(int i) {
this();
System.out.println("3 - Constructor with parameters");
}
static {
System.out.println("4 - Static initalizer block");
}
public static void main(String... args) {
System.out.println("5 - Main method");
new MyClass(0);
}
}
Run Code Online (Sandbox Code Playgroud)