1.构造方法
构造方法作用就是对类进行初始化。 如果你没有定义任何构造方法的形式,系统会为你自动调用一个不带任何参数的构造函数,那么你产生类的对象时只能用不带参数的方法,构造方法就是与类同名的那个方法,它的作用是可以用来初始化。下面来举一个例子来看一下:
class A{
public String name;
public A(String name) {
this.name = name;
System.out.println("有参数构造方法!");
}
public A(){
System.out.println("无参构造方法!");
}
public void eat(){
System.out.println(name+"干饭!");
}
}
public class Test {
public static void main(String[] args) {
A a1=new A(); //调用无参的构造方法
A a2=new A("小黑"); //调用有参的构造方法
a1.eat();
a2.eat();
}
}
运行结果为:
内存布局为:
但是,一般无参构造方法是不需要我们写的,每一个类都有无参构造方法,当创建实例化对象时,如果没有写构造方法,系统会默认调用无参构造方法;当写了构造方法时,就调用我们写了的构造方法。
2.初始化顺序
关于初始化有几种方法,上面的构造方法,也是初始化的一种;还有就地初始化、代码块初始化;通过下面一个例子来解释说明:
class A{
String name="丘比特"; //就地初始化
{
System.out.println(this.name);
System.out.println("我是普通代码块!");
}
public A(){
System.out.println("构造方法初始化!");
this.name="小丘比特";
System.out.println(this.name);
}
static {
System.out.println("我是静态代码块!");
}
}
public class Test {
public static void main(String[] args) {
new A();
}
}
运行结果:
注意: 使用static关键字定义的代码块,一般用于初始化静态成员属性;静态代码块不管生成多少个对象,其只会执行一次,且是最先执行的;然后就地初始化与普通代码块初始化看书写的先后顺序,写在前面的先执行;然后才是构造方法初始化。
总结
当我们遇到一些Java语法上的歧义时,应该多实践一下,或者查看java语法规范,这样有利于我们深入学习Java,不会被一些细节上的东西影响!
Java语法规范地址!