Java对数据类型很严格
数据类型进行运算的时候可以自动转换:将范围小的类型转换为范围大的类型
范围小的类型向范围大的类型提升, byte、short、char 运算时直接提升为 int 。
byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double
例如:byte b =1;int i = 2; b+i的值为int型
转换原理:
byte为1个字节,int为4个字节,byte和 int 类型运算时会提升为 int 类型 ,自动补充3个字节,因此计算后的结果还
是 int 类型。
同理,当一个 int 类型变量和一个 double 变量运算时, int 类型将会自动提升为 double 类型进行运算。、
byte + int = int
int + double = double
强制转换:由我们手动操作的(一般将 取值范围大的类型 强制转换成 取值范围小的类型 。)
数据类型 变量名 = (数据类型)被转数据值;
int i= (double)1.44;
注意:
1.浮点转成整数,直接取消小数点,可能造成数据损失精度。
2.int 强制转成 short 砍掉2个字节,可能造成数据丢失。
ASCII编码
在char类型和int类型计算的过程中,char类型的字符先查询编码表,得到97,再和1求和,结果为98。char
类型提升为了int类型。char类型内存2个字节,int类型内存4个字节。
字母
|
编码
|
‘0’
|
48
|
‘9’
|
57
|
‘A’
|
65
|
‘Z’
|
90
|
‘a’
|
97
|
‘z’
|
122
|
如果一个字母小写和大写的转换,可以使用+32或-32的方法。
char ch = 'a';
char Ch -= 32;
转换为小写,需要加32,转换为大写需要减32