java - 基础 - 类型转化
基本数据类型
引用数据类型
同种之间才能转化。
两者之间不能直接转化,需要通过封装类。
byte b = 1;
int a = b;
int a = 1;
byte b = (byte)a;
因为byte只有8位,int有32位(short是16位),大转小需要强转。
int a = 1000;
byte b = (byte)a;
可以编译,但是值会变化。只留后8位的值
补充内容(源码,反码,补码)
正数反码,补码和源码一致,负数反码为保持符号位不变的情况下其他位取反,补码为反码+1;
计算机中数字以补码形式存储。
补码转化为源码需要-1,然后取反,或者取反然后+1 (保留符号位不变)
例如 6 和 -6
6 -6
源码 00000000 00000000 00000000 00000110 10000000 00000000 00000000 00000110
反码 00000000 00000000 00000000 00000110 11111111 11111111 11111111 11111001
补码 00000000 00000000 00000000 00000110 11111111 11111111 11111111 11111010
int 1000 = 00000000 00000000 00000011 11101000
转为byte后补码变为
11101000 = -24
11101000是补码,
负数补码为反码+1,所以11101000的反码为补码-1 = 11100111
负数源码为反码保留符号位取反 ,所以11101000的源码为 10011000 = -24;
int a = 1;
long b = 1L;
byte c = a;
byte c = b;
浮点和整数转换比较的是精确程度,整数可以存入浮点。
float c = 1.0F;
int a = (int)c;
long b = (long)c;
直接把小数点后砍掉。
char和int可以直接转化,asc码
char c = 'a';
int a = c;
a = 97;
整数转char需要强制转换。