java封装数据类型——byte

水煮鱼它不香吗      2022-05-20     427

关键词:

  Byte 是基本类型byte的封装类型。与Integer类似,Byte也提供了很多相同的方法,如 decode、toString、intValue、floatValue等,而且很多方法还是直接类型转换为 int型进行操作的(比如: public static String toString(byte b) { return Integer.toString((int)b, 10); } )。所以我们只是重点关注一些不同的方法或者特性。

1. 取值范围

  我们知道,byte 表示的数据范围是 [-128, 127],那么Byte使用两个静态属性分别表示上界和下界:MIN_VALUE、MAX_VALUE

    

2. 缓存

  与Integer相似,Byte也提供了缓存机制,源码如下:

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));
        }
    }

  可以看出,Byte的缓存也是 -128~127。我们已经知道,byte类型值范围就是 [-128, 127],所以Byte是对所有值都进行了缓存。

3. 构造方法和valueOf方法

  Byte也提供两个构造方法,分别接受 byte 和 string 类型参数: public Byte(byte value) { this.value = value; }  和  public Byte(String s) throws NumberFormatException { this.value = parseByte(s, 10); } 。使用构造方法创建对象时,会直接分配内存。而 valueOf 方法会从缓存中获取,所以一般情况下推荐使用 valueOf 获取对象实例,以节省开支。

public static Byte valueOf(byte b) {
        final int offset = 128;
        return ByteCache.cache[(int)b + offset];
    }
public static Byte valueOf(String s, int radix)
        throws NumberFormatException {
        return valueOf(parseByte(s, radix));
    }
public static Byte valueOf(String s) throws NumberFormatException {
        return valueOf(s, 10);
    }

4. hashCoe 方法

  Byte 类型的 hashCode 值就是它表示的值(转int)

@Override
    public int hashCode() {
        return Byte.hashCode(value);
    }

    /**
     * Returns a hash code for a {@code byte} value; compatible with
     * {@code Byte.hashCode()}.
     *
     * @param value the value to hash
     * @return a hash code value for a {@code byte} value.
     * @since 1.8
     */
    public static int hashCode(byte value) {
        return (int)value;
    }

5. compareTo 方法

  Byte 也实现了 comparable 接口,可以比较大小。与 Integer 的 compareTo 有点不同的是,Integer 在当前值小于参数值时分别返回 -1、0、1,而Byte是返回正数、0、负数(当前值-参数值),当然,这也同样符合 comparable 的常规约定。 

public int compareTo(Byte anotherByte) {
        return compare(this.value, anotherByte.value);
    }

    /**
     * Compares two {@code byte} values numerically.
     * The value returned is identical to what would be returned by:
     * <pre>
     *    Byte.valueOf(x).compareTo(Byte.valueOf(y))
     * </pre>
     *
     * @param  x the first {@code byte} to compare
     * @param  y the second {@code byte} to compare
     * @return the value {@code 0} if {@code x == y};
     *         a value less than {@code 0} if {@code x < y}; and
     *         a value greater than {@code 0} if {@code x > y}
     * @since 1.7
     */
    public static int compare(byte x, byte y) {
        return x - y;
    }

 

完!

基本类型与封装类

                  基本数据类型一、Java共有8种基本数据类型:boolean,byte,char,double,float,int,long,short整型数据类型:短整型(short),整型(int),长整型(long)浮点数据类型:单精度浮点型(float),双精度浮点型(double)字符数... 查看详情

java字节的常用封装

...  byte跟Java其他基本类型的关系:     二.常用封装  由于工作关系,我封装了一个操作字节的库  github地址:https://github.com/fengzhizi715/bytekit  2.1bytekit的特点:  支持 查看详情

一些基本数据类型的类封装(包装类)

类Byte    Byte类将基本类型byte的值包装在一个对象中。一个Byte类型的对象只包含一个类型为byte的字段。  decode(String nm)          将String解码为Byte。  byteValue()    &nb 查看详情

java中的基本数据类型与封装类

   变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。因此,通过定义不同类型的变量,可以在... 查看详情

java语言中的string类跟byte、short、long、int、float、double、char、boolean等八大数据类型有什么不同?

...tring属于引用数据类型,这就是Java提供的字符串类,内部封装了很多方法(函数),简洁又安全那八种属于基础数据类型;这八种也有对应的引用数据类型int对应Integerchar对应Character其他都是首字母大写例如long对应Long引用类型... 查看详情

java基础之数据类型及其转换

一.八种数据类型以及其封装类  1.一共为四种:   整型:byte,short,int,long,占用字节分别为1,2,4,8,默认值都为0。   浮点型:float,double,占用字节为4,8,默认值分别为0L和0。   字符型:char,占用字节为2,默认... 查看详情

java面试之se基础基本数据类型

1、九种基本数据类型的大小以及它们的封装类在我们面试或者考试过程中经常会考到八种基本数据类型以及它们的封装类,那么有哪八种基本数据类型呢?它们的封装类又是什么呢?   首先,八种基本数据类型分别... 查看详情

java八大基本数据类

基本数据类型基本类型大小(bit)最大值最小值封装类型字节数(byte)boolean1--Boolean1或者4byte1*8(1)+127-128Byte1char2*8(16)Unicode2^16-1Unicode0Character2short2*8(16)2^15-1-2^15Short2int4*8(32)2^31-1-2^31Integer4float4*8(32) &n 查看详情

java-常见对象(基本类型包装类)

 为什么会有基本类型包装类  将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。常用操作:  1.用于基本数据类型与字符串之间的转换基本类型和包装类的对应:  byte  Byte  sh... 查看详情

java中基本数据类型byte的溢出问题

Java中基本数据类型byte的溢出问题问题源于:https://www.cnblogs.com/HuoHua2020/p/12326631.html定义两个byte类型的数据,将其之和赋值给一个新的byte类型数据byteb1=1;byteb2=2;byteb=(byte)(b1+b2);System.out.println(b);此时结果为3,与预期一致byte类型的... 查看详情

一些java面试知识点

1.九种基本数据类型的大小,以及他们的封装类。基本类型大小(字节)默认值封装类byte   1  (byte)0Byteshort   2  (short)0Shortint   4   0Integerlong   8   0LLongfloat    4   0.0fFloatdouble 8   0.0dDoubleboolean -     falseBoole... 查看详情

初识八大基本数据类型的包装类——java面向对象基础(25)

一、总括*八大基本数据类型的包装类:将基本数据类型封装了类(引用类型)*基本数据类型包装类*byte--Byte*short--Short*int--Integer*long--Long*float--Float*double--Double*char--Character*boolean--Boolean二、Integer的一些简单的使用1.其包装类型与基... 查看详情

java基本数据类型

基本数据类型JAVA中一共有八种基本数据类型,他们分别是 byte、short、int、long、float、double、char、boolean 类型型别字节取值范围byte整型1byte-27~27-1short整型2byte-215 ~215-1int整型4byte-231 ~231-1long整型8byte-263 ~263-1float 查看详情

java基础知识点总结

...一般类只能单继承,内部类实现多继承,接口可以多继承封装:访问权限控制public>protected>包>private内部类也是一种封装多态:编译时多态,体现在向上转型和向下转型,通过引用类型判断调用哪个方法(静态分派)。运... 查看详情

java中各种数据类型转换byte[]的方法

要求以下数据类型转换为byte[],并且从byte[]再转换回来,数据部丢失!shortintlongcharbooleanfloatdoubleStringClass参考技术AObjectOutputStreamoos=null;//对象输出流ByteArrayOutputStreambaos=null;//byte数组输出流ByteArrayInputStreambais=null;//对象输入流try//... 查看详情

(java基本数据类型)

java中提供了8中基本数据类型(六种数字类型、一个字符类型、一个布尔类型){byte:byte数据类型是8位、有符号的,以二进制补码表示的整数;最小值是-128(-2^7);最大值是127(2^7-1);默认值是0;byte类型用在大型数组中节约... 查看详情

java数据类型

1.bit就是位,也叫比特位,是计算机表示数据最小的单位2.byte就是字节3.1byte=8bit,00011100,一般用两个16进制来显示,所以我们经常看到1个字节显示为1c4.1byte就是1BJava基本类型共有八种,基本类型可以分为三类,字符类型char布尔... 查看详情

java中byte数组存的是啥类型的数据,byte数组有啥用

....或者说数组的泛型是byte.具体作用,泛泛的说,应该是存储数据.至于存储后干什么.那就看具体需求了.比如用于显示,用于逻辑判断......等等.参考技术A没什么用。java中的byte是假的。你看到它是byte实际是java底层是按照int存储的。在... 查看详情