首页 > 技术文章 > 02.强制类型转化

best-you-articles-040612 2021-05-15 06:06 原文

数据类型转化

小的数据类型可以转化为大的数据类型,自动类型转化

class demn{
    public static void main(String[] args){
        byte b = 11;//一个字节
        short s = b;//2个字节
        int i = s;//4个字节
        long l = i;//8个字节
        System.out.println(l);
    }
}

大的数据类型转化为小的数据类型,强制类型转化,否则丢失精度

强制类型转化的格式:
小数据类型 变量名 = (小数据类型)大数据类型

class demn{
    public static void main(String[] args){
        int i = 128;
        byte b = (byte) i;
        Syetem.out.println(b);//-128,负数是通过补码的形式存储的,先通过补码转化为原码,再求范围
        System.out.println(Integer.toBinaryString(-7));
        
        byte b1 = 1;
        byte b2 = 2;
        byte b3 = b1 + b2;//丢失精度
        byte b3 = (byte)(b1 + b2);
        System.out.println()
            
        System.out.println('a' + 1);
        
        int i = 10;
        long l = 20;
        i = (int)(i + l);
        System.out.println(i);
        
        byte b = 10;//一个整数没有加任何标识的时候,默认是int类型的数据
        System.out.println(b);//不报错
        //10是一个常量,编译器在编译的时候能够确认常量的值,java编译器会检测到10并没有超出byte的范围,所以允许赋值
        
        int i = 10;
        byte c = i;
        System.out.println(b);//java编译器在编译的时候并不能确定变量所存储的值
    }
}

数据类型转化要注意的一个细节

​ 1. 凡是byte,short,char数据类型的数据在运算的时候都会转化为int类型的数据再进行运算

​ 2. 两个不同的数据类型在运算的时候结果取决于大的数据类型

推荐阅读