2021-3-13-1 JAVA基础05:类型转换

由于java是强类型语言,所以在进行有些运算的时候,我们需要用到类型转换

容量: 低 ---------------------------------------------> 高
            byte,short,char-> int -> long -> float -> double

//本节是强制类型转换
//容量:低 ------------------------------------------> 高
//      byte,short,char-> int -> long -> float -> double

public class demo2 {
    public static void main(String[] args) {
        //强制转换  高->低  格式:(数据类型关键字)变量名
        int a = 128;
        byte b = (byte) a;//强制类型转换
        System.out.println(b);//输出-128,不是128,可以去看看补码。或者我考虑录一期视频讲讲。


        //自动转换  低->高  不需要任何操作,自动完成
        int a2 = 128;
        double b2 =a2;//自动转换
        System.out.println(b2);


        //这个看着玩
        int any_unicode = 249;
        char unicode_char = (char)any_unicode;//高转低,强转

        System.out.println(unicode_char);//输出249对应的unicode码


        /*
        注意点:
        1. 不能对布尔值进行转换(布尔是位,其他的是Byte起步)
        2. 不能把对象转换为不相干的类型
        3. 把容量高的转到容量低的时候,强制转换;反之,自动转换
        4. 转换的时候可能造成内存溢出,或者精度问题
         */


        //下面看看造成精度问题的实例
        System.out.println((int)21.2);//输出21
        System.out.println((int)2000.122f);//输出2000
    }
}
//操作比较大的数的时候,注意溢出问题

public class demo4 {
    public static void main(String[] args) {
        //JDK新特性,数字之间可以用下划线分割
        int money = 1000_0000;
        int num = 1000;
        int total = money*num;

        System.out.println(total);//输出1410065408,实际上是10**10,说明有问题。内存溢出。


        //那我么试试用long来看看能不能装下
        long total2 = money*num;

        System.out.println(total2);/* 输出还是1410065408,问题在于money*num的结果默认用int来装,
        int装的结果就是1410065408D,然后再将这个数转为补码装到long,所以long的值为1410065408 */


        //正确做法:运算前强行转换,
        //低容量类型和高容量类型进行算术运算,低容量类型会自动转换为高容量类型
        long total3 = money*(long)num;

        System.out.println(total3);//输出10**10,正确


        //拓展
        String total3_s = Integer.toBinaryString(money);//int转二进制字符串
        System.out.printf(total3_s);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值