2020-12-13

参考博客

java中int类型边界

简单数据类型之间的转换

在Java中整型、实型、字符型被视为简单数据类型,这些类型由低级到高级分别为(byte,short,char)--int--long--float--double
简单数据类型之间的转换又可以分为:

  • 低级到高级的自动类型转换
  • 高级到低级的强制类型转换
  • 包装类过渡类型能够转换

自动类型转换  低级变量可以直接转换为高级变量,例如,下面的语句可以在Java中直接通过:
    byte b;
    int i=b;
    long l=b;
    float f=b;
    double d=b;
如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如r
    char c='c';
    int i=c;
    System.out.println("output:" i);
输出:output:99;
对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。
    short i=99;

    char c=(char)i;

    System.out.println("output:" c);
输出:output:c;
但byte,short,int三种类型都是整型,因此如果操作整型数据时,最好统一使用int型。

强制类型转换   将高级变量转换为低级变量时,情况会复杂一些。即你必须采用下面强制类型转换这种语句格式:
    int i=99;

    byte b=(byte)i;

    char c=(char)i;

    float f=(float)i;
可以想象,这种转换肯定可能会导致溢出或精度的下降

数据溢出:

int money=1000000000;
int year=20;

long total=(long)(money*year);//错误、因为money与year的乘积已经溢出再强制转换成long类型,结果依然不正确
long total=(long)money*year;


final long MICROS_PER_DAY = 24 * 60 * 60 * 1000 * 1000; 
final long MILLIS_PER_DAY = 24 * 60 * 60 * 1000;
System.out.println(MICROS_PER_DAY/MILLIS_PER_DAY);//5 

final long MICROS_PER_DAY1 = 24L * 60 * 60 * 1000 * 1000; 
final long MILLIS_PER_DAY1 = 24L * 60 * 60 * 1000; 
System.out.println(MICROS_PER_DAY1/MILLIS_PER_DAY1);//1000

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值