Java学习里程-----Java基础_3基本数据类型的转换
一、什么叫转换
转换这个说起来其实有点抽象,我是不知道如何去说,我举个栗子:
水->温度升高->水蒸气->降温(一直降)->冰->融化->水
水可以变成蒸气、可以变成冰,说白了,反正都是水,但是可以来回转换。
二、为什么要转换
一般是因为需求,举例来说:
你现在有1块钱,然后花了8毛,你剩下多少钱?
答案很简单,2毛钱。但是如果让你去实现代码怎么去实现?
我们呢这样来做,1块钱是整形,没有小数,我们用int来定义
int money = 1;
花了8毛钱,那就用1块钱去减去这个八毛,但是,不是一样的类型是不可以进行操作的。
我们就需要转换,我直接先转换了,后面再说怎么转,如何去转。
废话不说上代码来看!
先不要看这个值具体多不对,我知道是肯定不对的,但是这个是有原因的,原因我放在下面去讲述。
你会发现我其实并没有做什么,就是用1 去减去 0.8 ,其中并没有做什么操作,这是为什么呢?
其实这个是Java底层帮我们自动转换的。
三、转换的种类
接着上面说,自动转换,这种自动转换,在Java中叫做自动类型转换,而除去这种自动转换,还有一种叫做强制类型转换,一定要牢记啊,两种转换!!!
先说自动类型转换:
转换条件:1,转换前后的数据类型兼容; 2,转换后的数据类型的表示范围要比转换前的大;
很明显int 和 float 都属于数字类型的基本数据类型,而且,float 包含 int 因为小数的数量要比整形的要大,所以,可以自动去转换。
再来说强制类型转换:
先举栗子:
你瞅瞅,编译器报错了,错误原因是:Type mismatch: cannot convert from double to float
翻译一哈:类型不匹配:无法从double转换为float
因为double的大小要比这个float大的多了,系统认为无法自动转换,但实际上0.5根本没有超过double和float的大小,怎么办呢?
这时候,强制类型转换来了:
我们强行给他变成float就好了,可能你也发现了,这是一种不安全的转换;
如果double的值我们不确定,一但这个值超过了float的大小,就会出现异常。
所以,要谨慎去使用。