• 变量系列教材 (四)- 在Java中进行基本类型的类型转换


    不同类型之间的数据可以互相转换,但是要满足一定的规则

    步骤1:转换规则
    步骤2:低精度向高精度转换
    步骤3:高精度向低精度转换
    步骤4:练习-类型转换
    步骤5:答案-类型转换

    步骤 1 : 转换规则

    转换规则如图所示 
    精度高的数据类型就像容量大的杯子,可以放更大的数据 
    精度低的数据类型就像容量小的杯子,只能放更小的数据 
    小杯子往大杯子里倒东西,大杯子怎么都放得下 
    大杯子往小杯子里倒东西,有的时候放的下有的时候就会有溢出 
    需要注意的一点是 
    虽然short和char都是16位的,长度是一样的 
    但是彼此之间,依然需要进行强制转换

    转换规则

    public class HelloWorld {

        public static void main(String[] args) {

            char c = 'A';

            short s = 80;

             

            //虽然short和char都是16位的,长度是一样的

            //但是彼此之间,依然需要进行强制转换

            c = (char) s;

            //直接进行转换,会出现编译错误

            s = c;

             

        }

    }

    步骤 2 : 低精度向高精度转换

    long l = 50;

    int i = 50;


    l 是long类型的,其类型长度是64位
    i 是int类型的,其类型长度是32位
    所以l的精度,比i的精度要高
    l = i;
    把i的值赋给l, 首先l和i彼此的类型是不一样的,那么能否转换就取决于彼此的精度
    这个例子,是低精度向高精度转换 是可以正常转换的
    换句话说,int比较小,要放进比较大的long,随便怎么样,都放的进去

    低精度向高精度转换

    public class HelloWorld {

      

        public static void main(String[] args) {

      

            long l = 50;

            int i = 50;

             

            //int比较小,要放进比较大的long,随便怎么样,都放的进去

            l = i;

              

        }

    }

    步骤 3 : 高精度向低精度转换

    byte b = 5;

    int i1 = 10;

    int i2 = 300;

    b = i1;

    b=i2;


    b的类型是byte,其长度是8,最大只能放127
    i1 的类型是int, 其长度是32,最大,反正就是很大了,超过127
    所以, 把int类型的数据转成为byte类型的数据,是有风险的
    有的时候是可以转换的,比如 b = i1 (i1=10);
    有的时候不可以转换 比如 b= i2 (i2=300) 因为放不下了
    编译器就会提示错误
    这个时候就只能采用强制转换,强制转换的意思就是,转是可以转的,但是不对转换之后的值负责。 风险自担,后果自负

    高精度向低精度转换

    public class HelloWorld {

      

        public static void main(String[] args) {

      

            byte b = 5;

            int i1 = 10;

            int i2 = 300;

              

            b = (byte) i1;

            //因为i1的值是在byte范围之内,所以即便进行强制转换

            //最后得到的值,也是10

            System.out.println(b);

              

            //因为i2的值是在byte范围之外,所以就会按照byte的长度进行截取

            //i2的值是300,其对应的二进制数是 100101100

            //按照byte的长度8位进行截取后,其值为 00101100 即44

            b =(byte) i2;

            System.out.println(b);

             

            //查看一个整数对应的二进制的方法:

            System.out.println(Integer.toBinaryString(i2));

             

        }

    }


    更多内容,点击了解: https://how2j.cn?p=61135

  • 相关阅读:
    druid 基本配置
    计算机组成
    数据结构
    shell编程练习
    java之Nio
    java集合深入学习
    mysql学习
    tomcat学习
    大数据面试题
    计算机网络复习
  • 原文地址:https://www.cnblogs.com/Lanht/p/12615605.html
Copyright © 2020-2023  润新知