java数据类型的转换

JAVA数据类型的强制转换

1.java数据类型从低到高的排序

数据类型 二进制位数 取值范围
byte 8位 最大存储数据量是255,存放的数据范围是-128~127之间。
short 16位 最大数据存储量是65536,数据范围是-32768~32767之间。
int 32位 最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
long 64位 最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
char 16位 存储Unicode码,用单引号赋值。
float 32位 数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。
double 64位 数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。
boolean ----- 只有true和false两个取值。

2.转换类型

强制类型转换(高---低)

(类型)变量名

​ 通过强制类型转换,我们可以将数据转换为同一数据类型,然而进行运算

public class Demo5 {
    public static void main(String[] args) {
        //强制类型转换
        //类型(变量名)
        double i=3.1415926;
        int x=(int)i;
        System.out.println(i);
        System.out.println(x);
    }
}

输出:

3.1415926
3

可以看到,强转来的数据,对上面的double类型的数据进行了一个截断,只取了整数部分。

自动转换(低---高)

​ 当我们对数据进行由低到高转换时,会自动进行转换

public class Demo5 {
    public static void main(String[] args) {
		int m=12;
        double n=(int)m;
        System.out.println(m);
        System.out.println(n);
    }
}

输出:

12
12.0

3.转换注意事项

  • 不能对布尔类型进行转换
  • 不能把对象类型转换为不相干的类型
  • 在把高容量转换到低容量的时候,强制转换
  • 转换的时候可能会出现内存溢出问题,或者精度问题!

4.溢出问题

public class Demo06 {
    public static void main(String[] args) {
        //操作比较大的数的时候,注意溢出问题
        //int的取值范围-2147483648~2147483647
        //数字之间可以用下划线进行分割
        int money=10_0000_0000;
        int years=20;
        int total1=money*years;
        System.out.println(total1);
        System.out.println("=====================================");
        //可以看到输出为负数,计算的时候结果溢出了
        //这时可以往大的类型上面进行强制转换
        long total2=((long)money)*years;//只需要转换一个数即可,在这转换的是前面的money
        System.out.println(total2);
    }
}

输出结果:

-1474836480
=====================================
20000000000
posted @ 2022-07-04 10:09  星余明  阅读(209)  评论(0编辑  收藏  举报