今天这里学到数据类型的转换,这里先给出一个相对重要的顺序。
从低精度向高精度的顺序
低精度 byte 、short、int、long、float、double、char 高精度
待会会用到
一、首先是数字类型的转换
这里给出两个转化类型 强制转换、自动转换。
如何理解?
强制转换需要在等号后面变量前边加上你需要转化成的类型并加上‘()’,
例如:
而自动转换不需要这一步,就可以顺利的自动运算
例如:
什么时候需要强制转换?
当你需要把高精度类数字转化成低精度的时候。
例如:
什么时候不需要强制转换?
当你需要把低精度类数字转化成高精度的时候。
例如:
注意:
1、例由于每一个数字类型的容量有大小差异,所以由高精度转向低精度的时候需要注意
容量不足而运算不在可理解范围内
比如:
而且这里并不认为这是一种错误的行为。
2、由此,还有一种使用方式也会出现这样的情况。
我们来定义
af 等于 int 2147483647
ag等于 int 2
我们试一下af*ag转换成long
(2*2147483647=4294967294,
-9,223,372,036,854,775,808 <4294967294< 9,223,372,036,854,775,807,在long的范围内)
奇怪吧,这里输出的居然是-2
这里可以看到内在的运算顺序应该是这样子的 int1*int2=int3(此时int3已经出现了一个错误)来验证一下
确实是这样子的,那如果我们就要这么计算怎么办,可以在运算之前就先把它转换掉
int1*(long)int2=?
这样是行得通的。
这里我有一个猜想,在int1*(long)int2=?中,
是有int*long=long这样一个规则吗??
那如果是byte*int*long呢。也是=long吗?
用高精度转低精度的规则来验证一下。
结果是 否。
3、我们由高精度转化为低精度数据的时候也会出现精度上的问题。
来看一下
二、char也可以转换成数字
学习内容就先分享到这里,下期见。