Java数据类型转换

243 阅读2分钟

数据类型转换

案例:定义一个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;       }}