Java中数据运算类型提升的问题

这里写自定义目录标题

Java中的数据类型

		Java是一种强数据类型的语言。Java中数据类型可以分为基本数据类型和引用数据类型两大类。
		基本数据类型为:
				四种整数类型:byte:一字节 short: 两字节 int:四字节 long:八字节,定义时在结尾加L或者l。
				两种浮点型:double:八字节 float:四字节,定义时在结尾加f或者F。
				一种字符型:char:占两字节
				一种布尔类型:true或者false
				类型由小到大为:byte short char int char float double long

类型转换的问题

我们只需要记一句话小转大自动转,大转小强制转即可。这里要注意的是在强制类型转换的时候可能会丢失精度。
在类型转换中还是有一些问题是需要我们注意的:

  1. 当byte,short参与运算的时候会自动提升为int类型参与运算。如果两个byte类型的变量参与运算可能会丢失报错丢失精度得问题。
    在这里插入图片描述
    在这里插入图片描述
    通过上面两幅图我们看见了,当定义两个byte变量的时候,在编译阶段会报错。这里就有疑问了,为什么我相同类型的变量运算会出现错误呢。
    我们再来看两个例子
    在这里插入图片描述
    在这里插入图片描述
    在这里我们看到如果是两个byte类型的常量进行运算,却神奇的没有问题了,这是为啥呢。
    这是因为Java中默认的运算类型是整型的,由于byte类型的a和b,虚拟机没有办法知道里面值的大小,认为有可能会超过byte的范围,因此就提升了int类型,因此报错了。如果是常量的话,虚拟机判断出来没有溢出,因此就不会报错。
  2. 强制类型转换,由大类型转换为小类型,有可能会丢失精度,但是不会报错。强制类型转化的方法为();
    在这里插入图片描述
    在这里就强制类型转换了,但是如果
    在这里插入图片描述
    这样的话就会报错,是因为括号的优先级高,所以这本质上和a+b没有区别。
    5.还有一点要注意的就是当整型遇见浮点型的话,整型变量会自动转换为浮点型
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值