3.5 类型转换

3.5 类型转换

我们知道Java是强类型语言,有些运算需要用到类型转换。

运算中,不同类型的数据先转化为同一类型,然后进行运算

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

低和高指的是容量,字节大小

public class Demo05{
    public static void main(String[]args){
        int i = 128;
        byte b = (byte)i;//强制类型转换,将int类型转换成byte类型
        System.out.println(i);
        System.out.println(b);
    }
}
//---------------------------------------输出结果为
128
-128

之所以会是-128是因为byte最大值为127,此时就会内存溢出的问题。

在转换的时候要注意内存溢出

强制类型转换:这是一种从高到低的转换

//强制类型转换
(类型)变量名

自动类型转换:是从低到高的转换

public class Demo05{
    public static void main(String[]args){
        int i = 128;
        double b = i;//从低到高的转换,不需要任何的修饰符
        System.out.println(i);
        System.out.println(b);
    }
}
//---------------------------------------输出结果为
128
128.0

注意点

/*
注意点
1. 不能对布尔值进行转换
2. 不能把对象类型转换为不相干的类型
3. 把高容量转换到低容量的时候,需要强制转换,反之不用强制
4. 转换的时候可能存在内存溢出或者精度问题!
*/
public class Demo05{
    public static void main(String[]args){
        System.out.println((int)23.7);
        System.out.println((int)-45.89f);
        char c = 'a';
        int d = c+1;
        System.out.println(d);
        System.out.println((char)d)
    }
}
//---------------------------------------输出结果为
23
-45
98
b

常见问题

/*
1. 操作比较大的数的时候,注意溢出问题
2. JDK7新特性,数字之间可以用下划线分割,而下划线并不会被输出,只是为了区分方便
*/
public class Demo06{
    public static void main(String[]args){
        int money = 10_0000_0000;
        System.out.println(money);
        int years =20;
        int total =money*years;
        System.out.println(total);
        long total2 = money*years;
        System.out.println(total2);
        long total3 = money*((long)years);
        System.out.println(total3);
    }
}
//---------------------------------------输出结果为
1000000000
-1474836480//这就是因为计算时内存溢出
-1474836480//因为money与years都是int类型,相乘之后默认也会被认为是int类型,计算完之后才把结果转换为long类型,此时结果还是溢出,也就是说转换之前已经出现问题了。
20000000000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值