您不能在课程中间使用语句。它必须与声明位于同一块或同一行中。
做您想要的事情的常用方法是:
- 声明期间的初始化
public class MyClass{private int i = 0;
}
通常,如果要为字段定义默认值,则是一个好主意。
- 构造器块中的初始化
public class MyClass{private int i;public MyClass(){ this.i = 0;}
}
如果您希望在字段初始化期间具有一些逻辑(如果/循环),则可以使用此块。它的问题在于,要么您的构造函数将彼此调用,要么它们将具有基本相同的内容。
就您而言,我认为这是最好的方法。
- 方法块中的初始化
public class MyClass{private int i;public void setI(int i){ this.i = i;}
}
这并不是真正的初始化,但是您可以随时设置值。
- 实例初始化程序块中的初始化
public class MyClass{private int i;{ i = 0;}
}
当构造函数不够用时,可以使用这种方法(请参阅构造函数块的注释),但通常开发人员倾向于避免这种形式。
奖励:
这是什么代码?
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); }}
答案
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)