Java数据类型转换(自动转换和强制转换)

数据类型的转换,分为自动转换和强制转换。

自动转换: 程序在执行过程中“悄然”进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换(低精度->高精度 转换)。

强制类型转换: 则必须在代码中声明,转换顺序不受限制(高精度 -> 低精度转换)。 PS:此种转换存在精度损失。

自动数据类型转换:
自动转换按从低精度到高精度的顺序转换。不同类型数据间的优先关系如下:
低--------------------------------------------->高
byte,short,char-> int -> long -> float -> double

强转: 需要在代码中声明
高--------------------------------------------->低
double->float -> long -> int -> byte,short,char

实例1:

public class Demo {
   public static void main(String[] args){
 int x; double y;
 x = (int)34.56 + (int)11.2;  // 丢失精度(强转)
y = (double)x + (double)10 + 1;  // 提高精度(自动转换)
System.out.println("x=" + x);
System.out.println("y=" + y);
  }
}

运行结果:
x=45
y=56.0

程序分析
1、由于在 34.56 前有一个 int 的强制类型转化,所以 34.56 就变成了 34。同样 11.2 就变成了 11 了,所以 x 的结果就是 45。
2、在 x 前有一个 double 类型的强制转换,所以 x 的值变为 45.0,而 10 的前面也被强制成 double 类型,所以也变成 10.0,所以最后 y 的值变为 56。
备注:其中 (double)可声明也可不声明,因为是提高精度。

转载:https://blog.csdn.net/farsight1/article/details/80447658
https://blog.csdn.net/u011240877/article/details/47721135

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值