1.以下代码无法通过编译:
public
class
Test1 {
public
static
void
main(String[] args) {
Foo obj=
new
Foo();
}
}
class
Foo{
int
value;
public
Foo(
int
initValue) {
value=initValue;
}
}
原因: 改类给出了一个自定义的构造方法,导致原有的默认构造方法无法使用,导致编译无法通过。
public class Test1 {
public static void main(String[] args) {
int a=6;
Foo obj=new Foo(a);
}
}
class Foo{
int value;
public Foo(int initValue) { //给出的构造方法
value=initValue;
}
}
如上代码就可以通过,因为它正确调用了class 类给定了自定义构造函数。
2.初始化块
Java的初始化块分为静态初始化块和非静态初始化块
静态初始化块
static{ //初始化内容 }
非静态初始化块
{ //初始化内容 }
静态初始化块仅能初始化类变量,即static修饰的数据成员。非静态初始化块在对象每次生成时都会被执行一次,可以初始化类的实例变量。两种初始化块不可以传参数。
非静态初始化块在构造函数执行时且构造函数主体代码没执行前执行
静态初始化块、非静态初始化块、构造函数 执行的顺序为:静态初始化块->非静态初始化块->构造函数
标签:初始化,Foo,静态,int,随笔,public,构造函数 From: https://www.cnblogs.com/louwangshayu/p/16768087.html