该类继承自Number,仅有一个final byte类型的成员变量value,用来保存对应的原始类型。
静态常量
//byte类型的最小值
public static final byte MIN_VALUE = -128;
//byte类型的最大值
public static final byte MAX_VALUE = 127;
//原始类型
public static final Class<Byte> TYPE = (Class<Byte>) byte[].class.getComponentType();
//1字节包含的bit数
public static final int SIZE = 8;
//1字节包含的字节数(自己当然只包含一个自己了😝)
public static final int BYTES = SIZE / Byte.SIZE;
构造函数
public Byte(byte value) {
this.value = value;
}
public Byte(String s) throws NumberFormatException {
this.value = parseByte(s, 10);
}
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));
}
}
该类有一个大小为256的数组,缓存了Byte所有的值。
valueOf
public static Byte valueOf(byte b) {
final int offset = 128;
return ByteCache.cache[(int)b + offset];
}
从ByteCache中取出对应的包装类,并返回。
parseByte
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;
}
先将字符串s转换为整型值,再强转为Byte值。radix为进制,稍后学习Integer时再深入探讨。
其他方法
public static byte parseByte(String s)
public static Byte valueOf(String s, int radix)
public static Byte valueOf(String s)
均是对以上两个方法的变形,不再赘述。
decode
public static Byte 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((byte)i);
}
学习Integer类时再细说。
toUnsignedInt
public static int toUnsignedInt(byte x) {
return ((int) x) & 0xff;
}
转换为无符号整型。
toUnsignedLong
public static long toUnsignedLong(byte x) {
return ((long) x) & 0xffL;
}
转换为无符号长整型。