java中构造方法以及初始化时的执行先后顺序

本文介绍了Java中构造方法的作用,包括初始化类对象和系统默认的无参构造方法。同时,通过示例展示了初始化顺序,包括就地初始化、普通代码块和构造方法的执行次序。强调了静态代码块只执行一次且先于其他初始化操作,以及如何根据初始化顺序理解Java语法。
摘要由CSDN通过智能技术生成

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语法规范地址!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值