java中的类型转换

一、自动类型转换

1.在java中,变量参与运算的时候会自动提升数据类型

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

二、强制类型转换

1.语句格式:

目标数据类型 变量名=(目标数据类型)要转型的变量值或者表达式

public class DataTypeDemo2 {
    public static void main(String[] args) {
        //哪句是编译失败的呢?为什么呢?
//        byte b1=3,b2=4,b; //不推荐这么定义
        //工作的时候,推荐一个变量定义占用一行
        byte b1=3;
        byte b2=4;
        byte b;
//        b=b1+b2; // 如果是变量参与运算,会先自动类型转换,做完运算后,再判断是否可以进行赋值
        //强制类型转换
        b=(byte)(b1+b2);
        System.out.println(b);
//        b=3+4; // 如果是常量参与运算,会先进行运算,运算后,会判断结果是否在范围内,如果在直接赋值


    }
}

2.注意事项:

使用可能会有风险,精度丢失

public class DataTypeDemo3 {
    public static void main(String[] args) {
        byte b = (byte)130; // 无法直接赋值,原因是130超过了byte的最大范围,需要强制类型转换
        System.out.println(b); // -126


    }
}

/*
    计算机中的数据都是采用补码进行运算的
    130的补码:00000000 00000000 00000000 10000010

    做强制类型转换:
    补码:  (00000000 00000000 00000000) 10000010
    补码:   10000010
    已知补码求原码:
            符号位      数值位
    补码:    1        0000010
    反码:    1        0000001
    原码:    1        1111110
    -----------------------------
           64 + 32 + 16 + 8 + 4 + 2 = 126
           因为符号位是1,所以最终的结果是-126
 */
posted @ 2024-10-19 09:30  你的镁偷走了我的锌  阅读(28)  评论(0)    收藏  举报