Java语言基础(七)
Java语言基础(七)
今天在公司多呆了会,回来晚了
一.自动类型转换
在Java中,数据是可以转换的 例如可以将byte类型的赋给int类型的
这里希望你了解内存的变化,例如
在这里,我想你应该知道十进制-1为什么是32位二进制1了吧
好好想想,如果想不起来,看看前面的,前面已经提到,实在不知道联系我
这里我们将int类型的 i 赋给long类型的,如下
将int类型的 i 赋给long类型 l ,这时long类型 l 应该是64位二进制1
由于十进制-1是负数,所以将int转换成long时,用1来填充,看下面的例子
int类型的 i 输出1,前面没有输出0,那是因为将0省略了
long也是,将int类型的i转成long时,是用0来填充的 ,但是省略了
基本数据类型转换有(自动类型转换)与(强制类型转换)
1) 自动类型转换,小类型到大类型的转换
(发生符号位扩展,正数用0填充,负数用1填充) 自动类型转换会"隐含"发生
说明:大类型转小类新的,如果不用强制类型转换的话,会报错
2) 强制类型转换(从大类型到小类型需要强制转换,这会造成精度损失或者溢出)
将int类型i赋值300,并将其赋给byte类型的,这时输出的是44
300的二进制:
1 0 0 1 0 1 1 0 0
-------------------------------------- 去掉前面的1,还有8位 (byte就占8位)
所有44是这样来的, 44 =1×2^5+1×2^3+1*2^2