数据转换

数据转换

自动类型转换

自动类型转换,也称为隐式类型转换,是指在不需要显式转换的情况下,Java编译器自动将一种数据类型转换为另一种数据类型。这通常发生在需要将小容量数据类型转换为大容量数据类型时,例如从int转换到long。自动类型转换遵循从低级到高级的顺序,具体顺序为:byteshortchar -> int -> long -> float -> double**。

强制类型转换

强制类型转换,也称为显式类型转换,需要程序员使用类型转换运算符来手动进行转换。这通常发生在将大容量数据类型转换为小容量数据类型时,可能会导致数据丢失或精度降低。例如,将double类型转换为int类型:

/**
 * @version: java version 1.8
 * @Author: Mr Orange
 * @description:
 * @date: 2025-12-01 18:35
 */
public class Demo05 {
    public static void main(String[] args) {
        int i= 128;
        byte b= (byte)i; //byte最大值为127 内存溢出
        //强制转换 (类型)变量 高--低

        double c= i;
        //自动转换  不需要加任何东西  低--高

        System.out.println(i);
        System.out.println(b);
        System.out.println(c);

        /*
        1.不能对布尔值转换
        2.不能把对象转换不相干的类型
        3.在高容量转换到低容量时,强制转换
        4.转换的时候可能出现溢出和精度问题

         */
        System.out.println("========================");
        System.out.println((int)23.7); //23
        System.out.println((int)-45.89f); //-45 精度问题

        System.out.println("========================");
        char c1= 'a';
        int  d =c1+1;
        System.out.println(d);
        System.out.println((char) d); //强转后变成’a' 后面+1 ‘a'后面是’b‘ 所以输出b



    }
}
/**
 * @version: java version 1.8
 * @Author: Mr Orange
 * @description:
 * @date: 2025-12-01 18:49
 */
public class Dome6 {
    public static void main(String[] args) {
    //操作比较大的数的时候,注意溢出问题
        //JDK操作特性 数字之间可以使用 _ 下划线分割
    int money=10_0000_0000;
        System.out.println(money);
        int year =20;
        int total=money*year;
        System.out.println(total);//-1474836480  计算的时候数据溢出了

        long total1=money*year;// -1474836480  默认是int 转换之前出现问题
        System.out.println(total1);
        long total12=money*((long)year);//在计算之前就进行转换
        System.out.println(total12);


}
}
posted @ 2025-12-01 19:05  stubbornly  阅读(0)  评论(0)    收藏  举报