理解类型转换
分别以int和long,int和double为例
long表示的范围较大,可以把int赋值给long,但是不能讲long赋值给int,double同理。不同数据类型变量之间 的赋值,表示范围小的可以隐式转换为范围较大的类型,反之不行。
int 字面值常量 给byte赋值![](https://i-blog.csdnimg.cn/blog_migrate/49421310ee8f180c1a8a9efafad66d0f.png)
byte表示的数据范围是-128~127,200已经超过范围,而100还在范围之内。
使用字面值常量赋值的时候,Java会自动进行一些校验,判定赋值是否合理
使用强制类型转换 ![](https://i-blog.csdnimg.cn/blog_migrate/40e533a267b850d7531acf4b1bd1b1e9.png)
强制类型转换可能会导致精度丢失,在上面的例子中10.5就变成了10。此外,强制类型转换不一定成功的,互不相干的类型之间无法强转,int和boolean就无法强制类型转换。
理解数值提升
当int和long混合运算时,int会提升成long,得到的结果仍然是long类型,需要使用long类型来接收,如果想用int类型接收,则必须强制类型转换。
当两个byte类型运算时,也会用到数值提升
两个byte想同类型的运算出现报错,原因是:虽然a和b都是byte类型,但计算a+b时会将a和
b都提升为int在进行计算,得到的结果也是int,这时候赋值给c就出现了问题。
由于计算机的cpu通常是按照四个字节为单位从内存中读写数据,为了硬件上实现方便,诸如short和byte这种低于四个字节的类型,会提升成int在进行计算。
int和String的类型转换
int转化成String有两种方法
String转化为int