day06

类型转换

转换顺序

java强类型语言,所以在由做一些运算的时候我们需要用到类型转换

由低到高:

​ byte,short,char——》int——》long——》float——》double

​ 低————————————————————————》高

注意:

​ 在不同的类型里面必须要转换为同一个类型才可以进行运算,不能够把类型转换为不相干的类型

强制类型转换

当类型由高转换为低的时候,会出现内容溢出或者精度的情况,但从低到高的时候就不会出现这样的问题

如下面代码:

public class demo2 {
    public static void main(String[] args) {
        int i=128;
        byte b=(byte)i;//类型转换从高转换为低的时候,会出现代码溢出
        System.out.println(i);
        System.out.println(b);//打印出来的数据是-128
    }
}

图片溢出

在这里插入图片描述

自动类型转换

如果在顺序转换的时候是从小转到大就不会出现强制转换负数的问题也不会报错

public class demo2 {
    public static void main(String[] args) {
        int i=128;
        byte b=(byte)i;//强制转换,代码出现溢出情况,所以会出现负数
        double c=i;//自动类型转换,代码从低专为高不会出现溢出的情况只会根据他的类型转化为想要的代码
        System.out.println(i);
        System.out.println(b);
        System.out.println(c);//正常的从低转为高不会出现溢出的情况
    }
}

不会溢出的情况

在这里插入图片描述

char,double,int,float相互转换

public class demo2 {
    public static void main(String[] args) {
        int i=128;
        byte b=(byte)i;//代码出现溢出情况,所以会出现负数
        double c=i;//代码从低专为高不会出现溢出的情况只会根据他的类型转化为想要的代码
        System.out.println(i);
        System.out.println(b);
        System.out.println(c);//正常的从低转为高不会出现溢出的情况
        System.out.println("==================================");
        System.out.println((int)23.6);//double类型转换为int强制转换
        System.out.println((int)24.5f);//float浮点数强转int
        System.out.println((int)-24.5f);
        System.out.println("==========================");
        char d='b';//char是字符串,所以我们每一个字母都会有对应的数字是可以和int相互转换的
        int e=d+1;//这咯的e的值是高转低,所以不用强制的转换,我们是可以查看到这个b这个字母对应的数字+1d的数字的
        System.out.println(e);//这里就是字母b+1=c对应的数字
        System.out.println((char) e);//这个是可以将数字转为对应的字母也就是C
        
    }
}

输出的结果

在这里插入图片描述

数字过大溢出

public class demo3 {
    public static void main(String[] args) {
        //操作数据比较大的时候会出现的溢出的问题
        //JDK7新特性,数字之间可以用下划线来分割
        int money=10_0000_0000;
        int years=20;
        int total=money*years;
        long total2=money*years;//y因为数字过大,所以需要转化,long,不然会出现数字溢出的问题
        long total3=money*((long)years);//long是最高的类型,所以可以直接转为long在进行输出就不会出现溢出的问题

        System.out.println(money);
        System.out.println(total2);
        System.out.println(total3);
    }
}

输出结果
在这里插入图片描述

谢谢遇见狂绅说:学习资料网址https://www.kuangstudy.com/course

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值