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
本文来自博客园,作者:星余明,转载请注明原文链接:https://www.cnblogs.com/lingstar/p/16441976.html