java中代码块和构造方法以及普通方法的代码执行顺序

首先,毫无置疑的,静态代码块在加载时就执行了,所以肯定是最先执行的。。。。

然后Child Child = new Child()时,new Child()时就会创建一个对象了,但是这个对象还不会执行构造方法中的内容,然后带着这个创建的这个对象去执行非静态代码块中的 内容,执行完后,就去执行构造方法中的内容了,重点来了,其实在执行非静态代码块之前,会带着这个对象执行类中的成员变量部分,因为已经有了对象,所以就有了依附于对象的这些属性,那么这时这些属性的初始值就是这些属性的数据类型初始值,如果这些属性被赋值了,然后再被赋值。

public class Fruit {

    {
        System.out.println("I`m Fruit");
    }
    public Fruit() {
        System.out.println("Hello Fruit");
        }

    static{
        System.out.println("Static Fruit");
    }

    public static void main(String[] args) {
        new Fruit();
    }
}

输出结果是:
Static Fruit
I`m Fruit
Hello Fruit

总结:顺序是先静态方法,方法块,构造方法,类中有成员变量,构造这个类时这些成员变量就是初始值,成员变量会跟着方法执行顺序赋值;String类型的话是指向引用的,会有方法作用域的限制;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值