美文网首页探索JDK
探索JDK之Byte类

探索JDK之Byte类

作者: 苏小小北 | 来源:发表于2018-10-29 18:14 被阅读0次

1. 简介

Byte类封装了一个值byte原始类型的一个对象。一个Byte类型的对象包含一个字段的类型是byte。此外,该类提供了一些方法处理byte、String的相关的操作。

2. 源码


(1) 实例变量:

1.value:表示数值大小(final不可变)

    private final byte value;
(2) 实例方法:

1.byteValue:返回byte类型值

    public byte byteValue() {
        return value;
    }

2.shortValue:返回short类型值

    public short shortValue() {
        return (short)value;
    }

3.intValue:返回int类型值

    public int intValue() {
        return (int)value;
    }

4.longValue:返回long类型值

    public long longValue() {
        return (long)value;
    }

5.floatValue:返回float类型值

    public float floatValue() {
        return (float)value;
    }

6.doubleValue:返回doubleValue类型值

    public double doubleValue() {
        return (double)value;
    }

7.toString:重写toString方法,先转换为int,然后调用Integer.toString(int)

    public String toString() {
        return Integer.toString((int)value);
    }

8.hashCode:重写hashCode,返回对应int类型的value

    public static int hashCode(byte value) {
        return (int)value;
    }

9.equals:比较大小

    public boolean equals(Object obj) {
        if (obj instanceof Byte) {
            return value == ((Byte)obj).byteValue();
        }
        return false;
    }

10.compareTo:比较当前Byte和另一Byte的数值差x-y

    public int compareTo(Byte anotherByte) {
        return compare(this.value, anotherByte.value);
    }
(3) 类变量:

1.MIN_VALUE:Byte最小值,为-128

    public static final byte   MIN_VALUE = -128;

2.MAX_VALUE:Byte最大值,为127

    public static final byte   MAX_VALUE = 127;

3.TYPE:对应的原始类的类型“byte”

public static final Class<Byte>     TYPE = (Class<Byte>) Class.getPrimitiveClass("byte");

4.SIZE:Byte数值二进制占用bit数目,为8

    public static final int SIZE = 8;

5.BYTES:Byte数值二进制占用byte数目,为1

    public static final int BYTES = SIZE / Byte.SIZE;

6.serialVersionUID:序列版本号,用于序列化和反序列化

    private static final long serialVersionUID = -7183698231559129828L;
(4) 类方法:

1.toString(byte):重写toString方法,返回value
直接调用了Integer.parseInt(String, int)方法

    public static String toString(byte b) {
        return Integer.toString((int)s, 10);
    }

2.parseByte(String, int):解析String为byte,base为radix,(不是每次new,看缓存池是否存在)

    public static byte parseByte(String s, int radix)
        throws NumberFormatException {
        int i = Integer.parseInt(s, radix);
        if (i < MIN_VALUE || i > MAX_VALUE)
            throw new NumberFormatException(
                "Value out of range. Value:\"" + s + "\" Radix:" + radix);
        return (byte)i;
    }

3.parseByte(String):解析String为byte,base为10,(不是每次new,看缓存池是否存在)

    public static byte parseByte(String s) throws NumberFormatException {
        return parseByte(s, 10);
    }

4.valueOf(String, int):同parseShort(String, int)

    public static Byte valueOf(String s, int radix)
        throws NumberFormatException {
        return valueOf(parseByte(s, radix));
    }

5.valueOf(String):同parseShort(String)

    public static Byte valueOf(String s) throws NumberFormatException {
        return valueOf(s, 10);
    }

6.valueOf(byte):返回byte值的Byte对象,(不是每次new,看缓存池是否存在)

    public static Byte valueOf(byte b) {
        final int offset = 128;
        return ByteCache.cache[(int)b + offset];
    }

7.decode(String):解析short类型的字符串,用于读取系统属性

    public static Short decode(String nm) throws NumberFormatException {
        int i = Integer.decode(nm);
        if (i < MIN_VALUE || i > MAX_VALUE)
            throw new NumberFormatException(
                    "Value " + i + " out of range from input " + nm);
        return valueOf((short)i);
    }

8.hashCode():重写hashCode,返回value值

    public static int hashCode(short value) {
        return (int)value;
    }

9.compare(byte , byte ):返回x-y的差值,返回类型为int

    public static int compare(byte x, byte y) {
        return x - y;
    }

10.toUnsignedInt(byte)::二进制按无符号类型重写计算值,返回int类型

    public static int toUnsignedInt(byte x) {
        return ((int) x) & 0xff;
    }

11.toUnsignedLong(byte)::二进制按无符号类型重写计算值,返回long类型

    public static long toUnsignedLong(byte x) {
        return ((long) x) & 0xffL;
    }
(5) 构造器:

1.Byte(byte value) :

    public Byte(byte value) {
        this.value = value;
    }

2.Byte(String s):

    public Byte(String s) throws NumberFormatException {
        this.value = parseByte(s, 10);
    }
(6) 静态内部类:

1.ByteCache:Byte对象缓存池,缓存范围-128-127
与ByteCache不同的是,ByteCache大小和范围是固定的

    private static class ByteCache {
        private ByteCache(){}

        static final Byte cache[] = new Byte[-(-128) + 127 + 1];

        static {
            for(int i = 0; i < cache.length; i++)
                cache[i] = new Byte((byte)(i - 128));
        }
    }

其他


本人也是在慢慢学习中,如有错误还请原谅、敬请指出,谢谢!

相关文章

  • 探索JDK之Byte类

    1. 简介 Byte类封装了一个值byte原始类型的一个对象。一个Byte类型的对象包含一个字段的类型是byte。...

  • 探索JDK之Integer类

    1. 简介 Integer类封装了一个值int原始类型的一个对象。一个Integer类型的对象包含一个字段的类型是...

  • 探索JDK之Number类

    1.简介 抽象类Number是所有平台类的超类。平台类包含:Byte, Double, Float, Intege...

  • 探索JDK之Float类

    Float类基本与Double一致,想要了解的朋友可以参考探索JDK之Double类这里就不详细介绍了传送门:ht...

  • 探索JDK之Long类

    1. 简介 Long类封装了一个值long原始类型的一个对象。一个Long类型的对象包含一个字段的类型是long。...

  • 探索JDK之Short类

    1. 简介 Short类封装了一个值short原始类型的一个对象。一个Short类型的对象包含一个字段的类型是sh...

  • 探索JDK之Double类

    1. 简介 Double类封装了一个值double原始类型的对象。此外,这个类提供了一些方法来转换double,S...

  • java.lang.Integer源码精读(一)

    JDK源码精读汇总帖 类声明 抽象类 Number 是 BigDecimal、BigInteger、Byte、Do...

  • 动态代理

    描述 动态代理是指在程序运行时生成代理类,通过操作代理类进而操作目标类。本文描述了JDK和cglib(Byte C...

  • switch

    switch语句可以作用在byte,short,char ,int和相对应的包装类上以及枚举(enum)在jdk1...

网友评论

    本文标题:探索JDK之Byte类

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