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需要强制转换。

 

posted @ 2019-09-21 10:57  不咬人的兔子  阅读(167)  评论(0编辑  收藏  举报