java中的类型转换

1.自动类型转换

容量小的数据类型自动转换成容量大的数据类型。

数据类型按从小到大排序为
byte->short/char->int->long->float->double
其中,byte占1个字节,8位;char和short占两个字节,16位;int和float占4个字节,32位;long占8个字节,64位;double占16字节,128位。

由于计算机存储的是有符号补码,所以int能表示的最大值为2^32-1,最小值为 2^32。
需要注意: 1.虽然long型字节数大于float,但是容量却是远小于float的。这是因为每一位代表的含义不同。2.如果没有声明,java默认整型数值为int型,浮点型数值为double型。

自动类型转换图如下所示

在这里插入图片描述
char、byte、short之间是不可以相互转换的
boolean不能和其他类型转换

2.强制类型转换

将容量大的数据类型转换为容量小的数据类型使用时要加上强制转换符 :() ,但可能造成精度降低或溢出

3.典型情况

1.因为类型不匹配带来的报错

short s1 = 1; 
s1 = s1 + 1;(报错)

java的整型默认为int,s1是short。第二行代码左为short,右为int。从右向左赋值时出错。
解决办法:使用+=运算符,或者对右边进行强制类型转换

//方式1
short s1 = 1; 
s1 += 1;
//方式2
short s2 = 1;
s2 = (short)(s2 + 1);

2.在计算过程中的类型提升

System.out.println(-5 + 1/4 + 2*-3 + 5.0);//答案是-6.0

在数值5.0之前,按照int类型计算。答案是 -11+5.0=-6.0

System.out.println(-5+ 1.0/4.0+ 2*-3+ 5.0);//答案是-5.75

在1.0/4.0时,运算转为double类型。答案是-10.75+5.0=-5.75

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值