JAVA 数据类型转换,自动类型提升

前言:

Java是强类型语言,要求赋值或传递时数据类型必须匹配,我们可以利用Java提供的数据类型的转换来消除这种错误

分类

自动转换和强制转换

自动转换

又叫隐式转换,小空间的数据类型可以自动转换成大空间的数据类型,也就是说低精度的数据可以升级成高精度的数据,反之不行

需要满足条件

1.两种类型要相互兼容

2.目标类型的取值范围大于源类型

例子

 byte a = 10;

        short b = a; 
        int c = b;
        c = a;

        long d = c;

        float e = d;

        double f = e;

        //以上都是自动类型转换

自动数据类型转换顺序如图

强制转换

强制数据类型转换也称之为显式类型转换,既然有些数据类型不能互相自动进行转换,那么Java提供了强制转换的方法,强制转换的语法就是用圆括号括起你要转换成的目的数据类型:

语法:变量=(目标类型)值;

需要满足两个条件

1.类型要兼容

2.目标数据类型范围要小于源类型范围

例子

   /*强制类型转换*/
    long l = (long)f;//强制转换会舍去小数部分(不是四舍五入)
    System.out.println(l);
    /*强制类型转换*/
    byte b1 = 67;
    byte b2 = 89;
    byte b3 = (byte)(b1 + b2);//系统将转换为int型运算,需要强制转换符
    System.out.println(b3);

注意数据溢出

int data1= 129;
        byte data2=(byte)data1; //-128 -- 127

自动类型提升

含义:两个操作数进行运算,结果类型是操作数范围比较大的操作数对应的类型

面试题

         byte a = 1;

        byte b = (byte)(a+1);

        //a = a+1; //会报错,因为a+1结果类型自动提升为int
        a+=1;      //相当于:a=(byte)(a+1);

提示:

  1. boolean型数据不能和其他基本数据类型进行转换;
  2. char型和int型数据可以互换;
  3. byte、short、char之间不会相互转换,它们三者在计算时首先会转换为int类型;
  4. 在强制类型转换过程中,源类型的值可能大于目标类型,因此可能造成精度降低或溢出,使用时需注意。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值