Java中八种数据类型所占字节计算

Java中有八种基本数据类型,分别为:byte、short、int、long、float、double、char、boolean。
这八种基本类型都有对应的包装类,分别为:Byte、Short、Integer、Long、Float、Double、Character、Boolean。

面试时时常会闻到这八种基本类型及其包装类,而且各种基本类型所占的字节数即使记不住、能用代码实现也是可以的。所以给出基本数据类型所占字节的代码。以供大家参考。

    @Test
    public void t1() {
        //一个字节占8个二进制位

        System.out.println("byte的二进制位数:" + Byte.SIZE);
        System.out.println("byte所占用的字节数:" + Byte.SIZE / 8);

        System.out.println("short的二进制位数:" + Short.SIZE);
        System.out.println("short所占用的字节数:" + Short.SIZE / 8);

        System.out.println("int的二进制位数:" + Integer.SIZE);
        System.out.println("int所占用的字节数:" + Integer.SIZE / 8);

        System.out.println("long的二进制位数:" + Long.SIZE);
        System.out.println("long所占用的字节数:" + Long.SIZE / 8);

        System.out.println("float的二进制位数:" + Float.SIZE);
        System.out.println("float所占用的字节数:" + Float.SIZE / 8);

        System.out.println("double的二进制位数:" + Double.SIZE);
        System.out.println("double所占用的字节数:" + Double.SIZE / 8);

        System.out.println("char的二进制位数:" + Character.SIZE);
        System.out.println("char所占用的字节数:" + Character.SIZE / 8);
    }
byte的二进制位数:8
byte所占用的字节数:1
short的二进制位数:16
short所占用的字节数:2
int的二进制位数:32
int所占用的字节数:4
long的二进制位数:64
long所占用的字节数:8
float的二进制位数:32
float所占用的字节数:4
double的二进制位数:64
double所占用的字节数:8
char的二进制位数:16
char所占用的字节数:2

所以就可以理解基本数据类型的大小关系:

 【byte(1Byte) < char(2Byte) < short(2Byte) < int(4Byte) < float(4Byte) <double(8Byte) < long(8Byte)】 这个排序是错误的!

正确的是:在Java中整型、实型、字符型被视为简单数据类型,这些类型由低级到高级分别为:

(byte,short,char)–int–long–float–double

注意,整数比浮点数低级。低级到高级可以自动转换。而高级到低级需要用代码强制转换,不强转会编译错误。

总结

  1. 位:”位(bit)”是电子计算机中最小的数据单位。每一位的状态只能是0或1。
  2. 字节:8个二进制位构成1个”字节(Byte)”,它是存储空间的基本计量单位。
  3. 1个字节可以储存1个英文字母或者半个汉字,换句话说,1个汉字占据2个字节的存储空间。
  4. 字:”字”由若干个字节构成,字的位数叫做字长,不同档次的机器有不同的字长。
  5. KB:K在二进制中表示1024,也就是2的10次 方。1KB表示1K个Byte,也就是1024个字节。

例如一台8位机,它的1个字就等于1个字节,字长为8位。如果是一台16位机,那么,它的1个字就由2个字节构成,字长为16位。

字是计算机进行数据处理和运算的单位。

【习题】

一个函数定义的返回值是float,它不能在return语句中返回的值的类型是(  )?

A.char              B.float        C.long         D.double

答案:D

double比float高级,long比float低级