Java的类型转换

变量的类型转换

1、自动类型转换

          自动类型装换也叫隐式类型转换,指的是两种数据类型转换类型在转换的过程中不需要显式地进行声明。当一个类型取值范围小的数值直接赋给另一个取值范围大的数据类型变量时,系统就会进行自动类型转换,否则需要进行强制类型转换
Java中支持不同数据类型自动转换图

byte
short
int
char
long
float
double

低------------------------------------------------------------------------------------------------------------------------------->高
注意 一般来说类型转换的时候字节小的向字节大转换是可行的,唯有下面这种类型的转换编译都不能通过的,就是byte类型不能转换成char类型 ,char类型也不能转换成short类型
在这里插入图片描述
byte、char、short 都不能同类型转换 ,b 和 s4 之所以可以编译通过是因为 ‘+=’ 有自动转换的功能 就是 b1 + b2 时自动转换成了int 类型 进行运算 然后把结果 再转成byte类型,short 也是如此, 其实这算是强转的一种了 因为去掉 byte b 其本身就是int 类型的结果只不过我们把它转成byte 类型来接收了
在这里插入图片描述
综合上面的两点来说 byte 、short 不做运算时是可以 进行自动转换的byte、short、char 之间做运算时都不能相互转换 最后唯有转成 int 类型来接收结果的原因是 三者 的范围实在太小了 例如 byte 最大就 -128 ~127 的范围 简单的做个三位数或者 两位数 乘除运算就容易超出范围了,而int的范围的能满足一般的运算结果 。所以 jdk 上就不允许 这样编写代码 一律 使用 int 类型来进行计算 的规范,避免不必要的错误发生,至于最后把结果强转成其他类型是另一回事了。

2、强制类型转换

           强制类型转换也叫显示类型转换,指的是两种数据类型之间的装换需要显示的声明。当两种类型彼此不兼容,或者目标类型取值范围小于源类型时,自动类型转换无法进行,这时就需要进行强制类型转换。例子:

public static viod main(String[] args){
   int num=4;
   byte b=(byte)num;
   System.out.println(b);
}

注意:在对变量进行强制类型转换时,会发生取值范围较大的数据类型向取值范围较小的数据类型的转换情况,如将一个int类型的数转换为byte类型,这样做极容易造成数据精度的丢失。例如

   byte a;
   int b=298;
   a=(byte)b;
   System.out.println("b="+b);
   System.out.println("a="+a);
运行结果

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值