美文网首页Java基础
原始类型包装类解读(Void、Boolean)

原始类型包装类解读(Void、Boolean)

作者: sollian | 来源:发表于2018-06-20 15:11 被阅读172次

前面学习Class#isPrimitive()方法的时候提到,以下类型均是原始类型:

java.lang.Boolean#TYPE
java.lang.Character#TYPE
java.lang.Byte#TYPE
java.lang.Short#TYPE
java.lang.Integer#TYPE
java.lang.Long#TYPE
java.lang.Float#TYPE
java.lang.Double#TYPE
java.lang.Void#TYPE

原始类型的包装类除Void外,都实现了Serializable和Comparable接口。
下面逐个学习。


Void

该类源码很短:

public final class Void {
    public static final Class<Void> TYPE = lookupType();

    private static native Class<Void> lookupType();

    private Void() {}
}

Void类不能被实例化,只是一个表示void关键字的占位符。
最常见的用法是覆写AsyncTask时,如下:

    public class MyTask extends AsyncTask<Void, Integer, String> {

        @Override
        protected String doInBackground(Void... voids) {
            return null;
        }
    }

更进一步理解,参考java.lang.Void 与 void的比较及使用


Boolean

boolean的包装类。关于boolean占用多少字节,参考Java中boolean类型到底占用多少个字节?

下面是比较有价值的代码:

public final class Boolean implements java.io.Serializable,
                                      Comparable<Boolean>
{
    public static final Boolean TRUE = new Boolean(true);

    public static final Boolean FALSE = new Boolean(false);

    public static final Class<Boolean> TYPE = (Class<Boolean>) boolean[].class.getComponentType();

    private final boolean value;

    public Boolean(boolean value) {
        this.value = value;
    }

    public Boolean(String s) {
        this(parseBoolean(s));
    }

    public static boolean parseBoolean(String s) {
        return ((s != null) && s.equalsIgnoreCase("true"));
    }

    public boolean booleanValue() {
        return value;
    }

    /*这里注意:通过该方法得到的只有TRUE或者FALSE这两个对象
      如: Boolean A = Boolean.valueOf(true);
          Boolean B = Boolean.valueOf(true);
          Boolean C = new Boolean(true);
          则 A==B, A!=C
      一般没有特殊需求,尽量使用该方法得到Boolean对象。
    */
    public static Boolean valueOf(boolean b) {
        return (b ? TRUE : FALSE);
    }

    public static Boolean valueOf(String s) {
        return parseBoolean(s) ? TRUE : FALSE;
    }

   ...
}

Number

Byte、Short、Integer、Long、Float、Double都继承自Number。
该类提供了转换为这几个包装类对应的原始类型的方法。

public abstract class Number implements java.io.Serializable {
    public abstract int intValue();
    public abstract long longValue();
    public abstract float floatValue();
    public abstract double doubleValue();
    public byte byteValue() {
        return (byte)intValue();
    }
    public short shortValue() {
        return (short)intValue();
    }
    private static final long serialVersionUID = -8742448824652078965L;

相关文章

网友评论

    本文标题:原始类型包装类解读(Void、Boolean)

    本文链接:https://www.haomeiwen.com/subject/prgheftx.html