类型转换

类型转换

机器在运算时会将各种基本数据类型先行转化,然后计算,其规则为:byte,short,char --> int --> long --> float --> double
而根据这个规则,可以将类型转化分成两种:

(1).直接转换

直接转换即依照转换规则进行转换操作,如(为byte --> int

点击查看代码
public class Demo04 {
    public static void main(String[] args) {
        byte i = 1;
        int b = i;
        System.out.println(i);
        System.out.println(b);
    }
}
其结果为 ![](https://img2022.cnblogs.com/blog/2910386/202206/2910386-20220624150912323-2054753650.png) 图片不能看,所以手动输入吧,结果为127,127

(2)强制转换

强制类型转换因为为“强制”实行,因此并不需要遵守运算规则,即无论如何都可进行,如(为int --> byte

点击查看代码
  int i1 = 128;
        byte b1 = (byte)i1;
        System.out.println(i1);
        System.out.println(b1);
其结果为128,-128

问题来了,为什么强制转换时byte的符号变了呢?
答:int的容量是大于byte的,且byte的容量为-128 —— 127,而128超出了byte的最大容量,产生了内存溢出,因此变为10000000,即-128的补码。

注:布尔值不可转换,不可把对象转化为不相干的类型,可能会有精度问题或者内存溢出,高容量转换为低容量强制转换(即小数转化为整数等

posted @ 2022-06-24 16:39  椿岁  阅读(100)  评论(0编辑  收藏  举报