java学习值基本数据类型的转换问题

252 阅读2分钟

基本数据类型所占的bit位

  • byte 1个字节即8个bit位
  • short 2个字节即16个bit位
  • int 4个字节即32个bit位
  • long 8个字节即64个bit位
  • float 4个字节即32个bit位
  • double 8个字节即64个bit位
  • char 2个字节即16个bit位
  • boolean 1个bit位

同种数据类型之间的转换即整型与整型之间,浮点型与浮点型之间的转换,比较的是内存空间

  1. 大的内存空间可以直接存储占较小内存空间的数据
  2. 当小的内存想要存储一个占较大内存空间的数据的时候此时需要进行强制类型转换
  3. 当需要进行强制类型转换的时候有可能会造成数据丢失
public class Test{
    public static void main(String[] args){
        int a = 10;
        byte b = (byte)a;
        System.out.println(b);//10
        int c = 1000;
        byte d = (byte)c;
        System.out.println(d);//虽然进行了强制类型转换,但是byte只有8个bit位,但是1000的有效bit位却是大于8个的,从后往前数第九个之后的会被强制截掉,造成数据丢失
    }
}

不同种数据类型的转换即整型与浮点型之间的转换,比较的是精度

  1. 双精度的变量容器可以存储任意类型的值
  2. 当一个低精度的变量容器要存放一个高精度的值的时候这时候编译失败,需要进行强制类型转换,
public class Test{
    public static void main(String[] args){
        float f = 13;
        int a = (int)f;
    }
}
  1. int类型是32个bit位,float类型也是32个bit位,但是float类型的精度更高;因此在转换的时候,需要进行强制转换,而long类型虽然是64个bit位但是精度却没有float的精度高仅此一个long类型的容器在接受一个float类型的值的时候也需要进行强制转换

总结就是

  1. 同种数据类型转换的时候,占内存空间比较大的容器可以直接存放内存空间比较小的数据,反之需要进行数据类型的强制转换
  2. 不同种数据类型记性转换的时候,高精度的数据容器可以直接存放低精度的数据,反之需要进行强制的数据类型转换