数据类型转换

1.为什么要进行数据类型的转换?

不同的类型的数据在一起运算,Java认为类型最终必须要形成统一,所以类型与类型之间需要装换的。

2.数据类型转换有三种:

自动类型转换。
强制类型转换。
表达式中的自动类型提升。

3.自动类型装换

自定义类型转换的总规则:小范围的数据或者变量可以自动的赋值给大范围类型的变量。

数据类型的范围由小到大:byte short int long float double
								/
							char

char类型的变量可以直接自动转换给int类型的变量。

public class DataConvertDemo01 {
    //定义一个程序的入口方法,可以自动执行的
    public static void main(String[] args) {
      //1.小的数据类型给变量是可以自动进行的。自动数据类型转换。
        byte b = 127;
        byte b1 = 27;
        //byte b2 = 128;//不行,128超过了byte的范围

        //2.小范围的变量可以自动的赋值给大范围的变量。也是自动类型转换
        byte age = 23;
        int it = age;
        System.out.println(age);
        System.out.println(it);

        //小范围的变量可以自动的赋值给大范围的变量。也是自动类型装换。
        long lg = 32113131;
        float ft = lg;
        System.out.println(ft);

        //小范围的变量可以自动的赋值给大范围的变量。也是自动类型转换。
        //浮点型运算可能出现数据失真,暂时都用double。
        float ft1 = 12.32f;
        double db = ft1;
        System.out.println(db);
    }
}

小结:
1.小的数据在变量的范围之内是可以自动赋值给该变量的。
2.小范围的变量可以自动的赋值给大范围的变量。

4.强制类型装换

例子

byte i = 200;//错误

byte类型的范围是-127到128之间,200已经超过了byte类型变量可以存储的数据范围大小。想要赋值成功,只有同过强制类型转换,将int类型的200进行强制转换成byte类型才能赋值。

4.1强制装换总规则

大的数据或者大范围的变量复制给小范围的变量,必须程序员手工进行强制转换,否则代码出错!!

4.2强制类型转换的格式:

数据类型 变量 = (数据类型)数据或者变量。
public class DataConvertDemo02 {
    public static void main(String[] args) {
        //byte b = 200;//必须强制转换否则报错

        //进行强制类型转换,代码就不会出错,但是数据可能失真!!
        byte b = (byte)206;
        System.out.println(b);

        //大范围类型的变量赋值给小范围类型的变量,也必须进行手工强制转换。
        int age = 23;
        byte b1 = (byte)age;
        System.out.println(b1);
		
		//浮点转成整数,直接截断小数点,保留整数部分,可能造成损失精度
		double db =23.98;
		int it = (int)db;
		System.out.println(int);//23
    }
}

小结
1.大的数据赋值给小范围的变量必须程序员手工进行强制装换。
2.大范围类型的变量赋值给小范围类型的变量,也必须进行手工强制类型转换。
3.浮点型转成整形,直接截断小数点,保留整数部分,可能造成数据损失精度。
4.强制类型转换可能会出现数据失真。

5. 表达式的自动类型提升

常量与常量等在参与运算的时候,是会进行特殊的自动类型提升的。
byte ,short , char -> int ->long -> float ->double

5.1表达式的自动类型提升总规则:

在表达式运算中byte, short,char类型的变量会直接自动转型成int类型来参与运算。

表达式的最终结果类型由表达式的最高类型决定的,最高类型是什么,表达式的最终结果类型就是什么。

public class DataConvertDemo03 {
    public static void main(String[] args) {
       //表达式的最终结果类型由表达式的最高类型决定的,最高类型是什么,表达式的最终结果类型就是什么类型。
        byte b = 10;
        short st = 100;
        int it = 1000;
        //结果是int
        int rs = b * st + it;
        System.out.println(rs);

        // 面试题
        //  2.在表达式中运算,byte , short ,
        // char类型的变量会直接自动转型成int类型来参与运算。
        byte b1 = 100;
        byte b2 = 20;
        int rs1 = b1 + b2;
        System.out.println(rs1);//结果类型是int

        byte bb1 = 10;
        byte bb2 = 10;
        double rs2 = bb1 + bb2 +1.0;
        System.out.println(rs2);//结果类型是double

    }
}

小结
1.在表达式中参与运算,有特殊转型。
byte , short , char 是直接转换成int参与运算的。
2.表达式的最终结果类型由表达式的最高类型决定的,最高类型是什么,表达式的最终结果类型就是什么

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值