第16节 大类型向小类型转换

1、概述

1、大类型向小类型转换叫做强制类型转换,简称强转,有时也称为显示类型转换。
举例:变量b是字节类型,现在我们做一个变量b和10相加的运算,并且将这个结果重新赋值给变量b
图片说明
Java语言在进行整数运算时,默认是按照int类型来处理的,因此变量b+10的结果是int类型,虽然这个值没有超过byte类型最大值,但是Java语言仍然要求b+10的结果,赋值给字节类型变量时需要做强制类型转换。强转的写法是写对小括号,括号里写上要转换的类型的关键字,后面是转换的表达式。

注意:如果我们是做5和10相加的结果,这里b就无需做强制类型转换。因为java语言有一个特点,Java语言对于5+10这种明显的可以得出结果的字面量的运算,在编译期间直接将五和十相加,如果结果没有超过字节类型的最大值,那么就没有任何错误,结果15会在编译期间就保存在变量b中。
如果是变量b和10相加,那么java语言不能确定变量b中的值肯定是5,所以b+10是在解释运行期间才进行计算,那么这个结果就按默认的int类型来处理,所以如果是向字节类型变量赋值需要做强制类型转换。

2、强制类型转换时要注意边界数风险的问题,意思是大类型向小类型转换时,有可能数据位成为小数的高位的符号位,也有可能超过小类型存储的最大值。

2、大类型向小类型转换案例

图片说明
我们定义一个变量i是int类型,存储的数据129,如果我们将变量i的值赋值给字节类型b,首先需要做强制类型转换,把i的值强转成字节类型,在赋值给变量b。
我们知道字节类型最大数是正127,那么129存储的变量b中,它的值肯定不再是129。
图片说明

我们按取反加一来计算,就是后面七位全是1,所以它的结果是-127,这就是大类型的数据位转换为小类型的符号位。

图片说明

将257转化为二进制就是,1后面有八个0再加1就是257,如果把这九位数存在变量b中,我们知道字节类型变量只能存八位,所以最高位的1将丢失,只剩下后八位,后八位的结果就是+1,因此257转换为字节类型后结果是+1,因为最高位已经丢失掉了。

全部评论

相关推荐

01-23 14:54
同济大学 Java
热爱敲代码的程序媛:给你提几点【专业技能】这个模块里面可优化的地方:1.【具备JVM调优经验】可以去b站上搜一下JVM调优的视频,估计一两个小时凭你的学习能力就能掌握JVM调优的实践方面的技能。2.【MySql优化】MySql这一栏,你去b站或者找个博客看看MySql优化,学一下,如果你本身比较熟悉MySql语句的话,那基本半天时间凭你的学习能力MySql语句优化方面的技能你也能掌握个差不多。以上1,2两点主要是因为我看你专业技能大部分都说的是偏理论,没有写应用。再就是最后,你结合你的项目,想一想你的项目中哪些sql语句是可以用MySql优化的,到时候你面试的时候也好结合着说一下。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务