数据类型转换
案例:定义一个float类型的变量并给该变量赋值10.0
public class Varies4 {
public static void main(String[] args){
//此时发现报错
float number = 10.0;
}}
此时发现报错
原因:在计算机中, ****所有的小数默认double 类型,所有的整数默认都是int 类型。
10.0 默认是double 类型,而float 类型是4 个字节。double 类型是8 个字节,所以将double 类型的10.0 , 赋值给float 类型的变量number ,会报损失精度的错误
解决方案:
方式一:小数后面加f可以表示float类型存储
| | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
}
public class Test {
public static void main(String[] args) {
/* * 此时发现报错
* 10.0默认是double类型,而float类型是4个字节
* double类型是8个字节,所以将double类型的10.0
* 赋值给float类型的变量number,会报损失精度的错误 */
float number = 10.0f;
System.out.println(number);
}
方式二:数据类型转换
在java中,不同的数据需要保存在不同的空间中,而开辟空间的时候,需要通过不同的类型关键字来定义当前这个空间是什么类型的空间。开辟的空间如果和保存的数据类型不一致,那么就很容易导致程序出现错误。这时我们就需要使用数据类型的转换技术,完成数据的保存工作。
数据类型的转换,可以分为两种:
1)隐式类型转换(自动类型转换)自动类型提升
2)强制类型转换
隐式类型转换
隐式类型转换:在程序中,空间保存的数据类型不一致的时候,java内部会自动的帮助我们转换。要能够自动转换,必须遵守Java中的自动转换的规则:
可以把小空间中的数据给大空间中保存。
如:byte 空间中的数据, 可以自动的转成 short int long float double
但是不能把double 保存在 byte 、int 、 short 、long 等空间。
| public class Test { public static void main(String[] args) { /* * 把b空间中的byte类型的数据 * 转换成int类型再保存到i空间中 */ byte b = 1; int i = b; }} |
|---|
容量小的类型可自动转换为容量大的数据类型;
强制类型转换
强制类型转换:大的数据类型需要强制转换成小的数据类型
强制类型转换:它一般都会有数据的丢失。
如何强制类型转换?
语法:小的数据类型 变量名 = (小的数据类型)大数据类型的数据
| public class Test { public static void main(String[] args) { /* * 将int类型的数据强制转换成byte类型 */ int number = 10; byte b = (byte)number; }} |
|---|