java学习基础03:类型转换

类型转换

数据类型精度

byte,short,char->int->long->float->double

低---------------------------------------------------高

      1.boolean类型不能进行转换
      2.高精度转换为低精度需要进行强制类型转换(但是会出现精度丢失)
      3.低精度转换为高精度可以自动进行转换(但是可能会出现内存溢出的问题)
      4.不能把数字类型转换为不相干的类型
      5.两个不同类型的数值运算中先转换为同一类型再进行计算

强制转换

高精度的数据转换为低精度的数据需要进行强制类型转换。

 public static void main(String[] args) {
//        高转低
        int i2=128;
        System.out.println((byte)i2);
​
 //       运行结果为-128,因为byte只能取0~127区间,超过这个区间导致了内存溢出。  

自动类型转

低精度转换为高精度可以进行自动转换

 public static void main(String[] args) {
//        低转高
        byte i1=127;
        double i2=i1;
        System.out.println(i2);
    }
输出结果:
    127.0

说明低精度转高精度不需要变量前加(数据类型)

拓展大数计算

public static void main(String[] args) {
    int i1 =10000_0000_0;
    int i2 =20;
    int i3=i1*i2;
    System.out.println(i3);//-1474836480
}

i3的计算结果为-1474836480,这个属于计算过程中溢出

 public static void main(String[] args) {
        int i1 =10000_0000_0;
        int i2 =20;
        long i3=i1*i2;
        System.out.println(i3);//-1474836480
    }
}

我们把i3数据类型换成long依旧造成的溢出

那我们该如何解决呢,只要在计算前进行强制类型转换就可以了

public static void main(String[] args) {
    int i1 =10000_0000_0;
    int i2 =20;
    long i3=(long)i1*i2;
    System.out.println(i3);//20000000000
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值