java中的类型转换

类型转换

  概述:不同类型的数据之间可能会进行运算,而这些数据取值范围不同,存储方式不同,直接进行运算可能会造成数据损失,所以需要将一种类型转成另一种类型再进行运算。

  分类:1.自动(隐式)类型转换       

        小类型转大类型,自动替身为大类型,运算结果是大类型

        数据类型的范围从小到大如下:

          byte,short,char--->int(默认的整型)--->long--->float--->double(默认的浮点型)

          boolean类型不参与比较,它的值只有true和false两个

     2.强制(显示)类型转换

        手动将大类型转换成小类型,运算结果是小类型

        格式:目标类型 变量名=(目标类型)要转换的值

        注意:强制类型转换再使用的时候可能会出现精度丢失的问题

  类型关系图:

 注意事项:当且仅当大类型数据可以转换为小类型数据时,才进行转换,否则会造成精度损失(例:当浮点数(小数)转换为整数,

浮点数小数点后面的值会丢失)

例:

  如果定义两个变量,一个为int型,一个为byte型,他们运算的结果是一个int型,所以可以定义一个int变量来进行接收他们的计算的结果

public class d {
    public static void main(String[] args) {
        //定义的格式:数据类型 变量名=初始值
        //定义一个int类型的数据和一个byte类型的数据
        int bb=4;
        byte aa=5;
        int cc=aa+bb;
        System.out.println(cc);
    }
}

运算结果为:

9

  但是如果使用byte来接收呢,程序就会报错,这个错误主要是因为当不管是什么short,byte,还是char类型计算的时候都会转换成int类型来进行计算,所以在int类型和byte类型计算的时候,会先将byte类型转换为int类型,结果也是int类型。这个时候如果还是要求数据类型

为byte类型呢?这个时候就需要用到强制类型转换了,将aa和bb运行的结果强制转换为byte就可以了。

public class d {
    public static void main(String[] args) {
        //定义的格式:数据类型 变量名=初始值
        //定义一个int类型的数据和一个byte类型的数据
        int bb=4;
        byte aa=5;
        byte cc=(byte)(aa+bb);   //aa和bb的结果为int类型,强制转换为byte类型
        System.out.println(cc);
    }
}

运行结果为:

9

但是强制类型转换是不能随随便便就运行的,有时候会造成精度丢失的情况,比如将一个浮点数类型的数据强制转换为一个int类型的数据:

public class d {
    public static void main(String[] args) {
        //定义的格式:数据类型 变量名=初始值
        double dd=5.4;
        int qq=(int)dd;   //强制转换为整型
        System.out.println(qq);
    }
}

运行结果为:

5

  

原文地址:https://www.cnblogs.com/zxy6/p/14180497.html