search.png
关于我
menu.png
Java review(6) 成员默认值

Java在构造对象实例的时候会自动的将成员初始化,赋予默认值,其中分为基本类型、对象类型、静态类型三种成员的默认值,以下是一个测试例子:

class A {
    // 基本类型
    private boolean aBoolean;
    private byte aByte;
    private char aChar;
    private short aShort;
    private int anInt;
    private long aLong;
    private float aFloat;
    private double aDouble;

    // 对象
    private Date date;
    private Double d;

    // 静态
    private static int a;
    private static Integer b;

    @Override
    public String toString() {
        return "A{" +
                "aBoolean=" + aBoolean +
                ", aByte=" + aByte +
               ", aChar=" + aChar + " (" + (int) aChar  + ")" +
                ", aShort=" + aShort +
                ", anInt=" + anInt +
                ", aLong=" + aLong +
                ", aFloat=" + aFloat +
                ", aDouble=" + aDouble +
                "\n" +
                ", date=" + date +
                ", d=" + d +
                "\n" +
                ", a=" + a +
                ", b=" + b +
                '}';
    }
}

    @Test
    public void test1() throws Exception {
        A a = new A();
        System.out.println(a);
        // A{aBoolean=false, aByte=0, aChar=  (0), aShort=0, anInt=0, aLong=0, aFloat=0.0, aDouble=0.0
        // , date=null, d=null
        // , a=0, b=null}
    }

可以看到这种初始化规则:

  1. 静态成员也会进行初始化,初始化的规则和非静态成员一致

  2. 对于基本类型,初始化默认值如下:

    在这里插入图片描述
    在这里插入图片描述

  3. 对于对象,初始化为null

  4. 可以猜测,JVM为对象在堆分配内存时,分配好之后就顺便把空间给清0了

版权声明

知识共享许可协议 本文章由作者“衡于墨”创作,转载请注明出处,未经允许禁止用于商业用途

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
发布时间:2019年11月28日 14:17:27

评论区#

还没有评论哦,期待您的评论!

关闭特效