美文网首页
Java 数据类型转换

Java 数据类型转换

作者: 向祥祥 | 来源:发表于2020-04-11 18:54 被阅读0次

    1.概述

    Java程序中要求参与计算的数据,必须保证数据类型的一致性,如果不一致将发生类型转换。

    2.自动转换

    一个int类型变量和一个byte类型变量进行加法运算:

    int a=1;
    byte b=2;
    

    运算结果将是int类型,这就是数据类型自动转换的现象。
    自动(隐式)转换特点:
    ①将取值范围小的类型自动提升为取值范围大的类型;
    ②代码不需要进行特殊处理,自动完成。

    public static void main(String[] args) {
        int a=1;
        byte b=2;
        //byte c=b+a;//报错
        //int类型和byte类型运算,结果是int类型
        int d=b+a;
        System.out.println(d);
    }
    

    3. 强制转换

    将1.5赋值到int类型变量会发生什么?产生编译失败,无法赋值。

    int a=1.5;//报错
    

    double类型内存8个字节,int类型内存4个字节。1.5是double类型,取值范围大于int。可以理解为double是8升的水壶,int是4升的水壶,不能把大水壶中的水直接放进小水壶中。
    只有通过强制类型转换,将double类型强制换成int类型才能赋值。
    强制(显式)转换特点:
    ①将取值范围大的数据类型转换成取值范围小的数据类型;
    ②代码需要特殊处理,需要手动执行。
    转换格式:
    数据类型 变量名 = (数据类型) 被转换数据值;
    将1.5赋值到int类型,代码修改为:

    //double类型数据强制转换成int类型,直接去掉小数点。
    int i = (int)1.5;
    

    同理,一个short类型和1相加,若要将值赋值给short类型的变量,需要强制转换。

    short a=2;
    short b = (short) a+1;
    

    注意事项:
    ①强制类型转换一般不推荐使用,可能发生精度损失、数据溢出;
    数据溢出:

    int a = (int) 6000000000L;//long强制转换成为int类型
    System.out.println(a);//输出1705032704,数据溢出
    

    精度损失:

    int b = (int) 3.5;//double==>int,强制类型转换
    System.out.println(b);//输出3,不是四舍五入,所有的小数位都会被舍弃。
    

    ②byte/short/char三种数据类型都能发生数学运算

    char char1=’A’;//字符变量
    System.out.println(char1+1);//输出66,大写字母A被当成65处理。
    

    ③ byte/short/char三种数据类型都能发生数学运算,在运算时,都会首先被提升为int类型,然后计算,计算结果为int数据类型

    byte a = 10;
    byte b = 20;
    byte result = a + b;//编译报错,会提升成int数据类型计算,计算结果为int数据类型。
    System.out.println(result);
    

    ④boolean类型不能发生数据类型转换。

    相关文章

      网友评论

          本文标题:Java 数据类型转换

          本文链接:https://www.haomeiwen.com/subject/pdnumhtx.html