构造器与垃圾回收器

1、构造器初始化顺序(普通代码块、静态代码块、构造方法(子类、父类)、成员、静态成员的执行顺序)


public class Parent {

    private int age = 2;
    private String name = "micky";

    public Parent(int age, String name) {
        super();
        System.out.println("构造方法---" + "age = " + age + "|" + "name =" + name );
        this.age = age;
        this.name = name;
        System.out.println("构造方法+++" + "age = " + age + "|" + "name =" + name );

    }

    private static int version = 1;

    static {
        System.out.println("静态代码块---" + "verion" + version);
        version = 2;
        System.out.println("静态代码块+++" + "version" + version);

    }

    {   
        System.out.println("普通代码块---" + "version" + version);
        age = 10;
        name = "panda";
        version = 3;
        System.out.println("普通代码块+++" + "vesion =" + version +"|" + "age =" + age + "|" + "name = "+ name);
    }

    @Override
    public String toString() {

        System.out.println("toString方法" + "age = " + age + "|" + "name = " +name);
        return super.toString();
    }

输出结果为:静态代码块—verion1
静态代码块+++version2
普通代码块—version2
普通代码块+++vesion =3|age =10|name = panda
构造方法—age = 5|name =ruimin
构造方法+++age = 5|name =ruimin
toString方法age = 5|name = ruimin
执行顺序为 静态对象初始化>静态代码块>普通代码块>普通对象初始化>构造方法

2、垃圾回收器的回收机制

变量有两种:原始主数据类型和引用

原始主数据类型指的就是指八种基本数据类型

引用是指创建对象的变量。

我们首先分析这几种典型代码的堆栈情况:

首先为大家讲述一下实例变量和局部变量的概念

实例变量:对象的状态即为实例变量,实例变量是被声明在类而不是在方法里,实例变量存在于所属的对象中。

局部变量:对象的行为即为方法,声明在方法中的变量即为局部变量,局部变量和方法的参数被声明在方法中。它是暂时的,且生命周期只限于方法被放在栈上的这段空间。

对象一定是在堆中,实例变量永远都会有默认值,局部变量没有默认值,如果在变量初始化之前就使用的话,编译器会显示错误。

所有局部变量声明在方法或方法的参数上

当没有一个引用指向对象时,该对象就随时可能被垃圾回收器回收

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值