使用枚举为甚占用更多的空间

枚举是强类型数据,具有更高的安全性,并且它将运行期的参数检查放到了编译期,保证了代码编写的准确性,提高了代码的可读性,但是,枚举也并非完美的的,它会占用更多的空间

测试代码:

public enum Season {

    Spring(1,"春","cyan","warmth"){
        public void doSomething(){};
    },Summer(2,"夏","green","hot"){
        public void doSomething(){};
    },
    Autumn(3,"秋","yellow","cool"){
        public void doSomething(){};
    },Winter(4,"冬","white","cold"){
        public void doSomething(){};
    };

    private int code;
    private String name;
    private String color;
    private String feel;

    Season(int code, String name, String color, String feel) {
        this.code = code;
        this.name = name;
        this.color = color;
        this.feel = feel;
    }

    public int getCode() {
        return code;
    }

    public String getName() {
        return name;
    }

    public String getColor() {
        return color;
    }

    public String getFeel() {
        return feel;
    }
}

接下来使用javac命令进行编译:

如果编译时提示:编码GBK的不可映射字符,可以在命令后面加入-encoding UTF-8  如:javac -encoding UTF-8 Season.java

可以看出,编译后产生了五个文件,这五个文件是什么呢?我们可以使用javap反编译指令来查看其中的内容

Season$1.class

由于Season$2~$4的内容一样,就不一一列出了

下面是Season.class的内容

可以看出枚举类型使用了public static final 关键字修饰

但是这仅仅是体现在文件数量上吗

在开发时,我们还常常使用零另一种方式定义一些公共的,不变的量,那就是静态常量,下面使用静态变量来进行测试

测试代码

public class Season {
    public static final int SPRING=1;
    public static final int SUMMER=2;
    public static final int ATUMN=3;
    public static final int WINTER=4;
}

使用javac编译后值产生了一个文件

可以看出,两个文件大小差了十多倍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值