您的位置:首页 > 编程语言 > Java开发

java基本数据类型转换

2011-03-22 21:20 323 查看
java基本数据类型转换,看似简单,可很多人在工作编程中却会放错误,原因是对它的机制理解的不够

我这里以byte,int之间转换为例,进行说明

理解基本数据类型转换,首先得理解java的负数表示,java负数使用补码的方式表示,也就是说一个byte数,0x80,它的值是-128,而0xFF,表示-1,关于补码,大学基础课,我就不多说了

1.byte转换成int

byte转换成int数据变长了,原来一个字节变成了4个字节

java转换规则是这样的,后面扩充的3个字节填值跟byte的符号位值相同,符号位为1,就填充1,符号位为0,就填充0,以0x80为例,转换成int后就变成了0xFFFFFF80,根据补码取反加1的规则,该int的值依然是-128,若是0x70,转换成int后就变成了0x00000070,该int的值依然是127,也就是说,从byte转换成int,数据的值不发生变化。

2.int转换成byte

int转换成byte很简单,就是简单去掉int的高三位,这样处理后,就可能产生一些变换,例:int x = 128,int y=-128,你把它转换成byte它的值都变成了-128,就是这个机制导致的

我写两个简单例子用于说面上面两个问题:

public void testbyte(){
byte x = 0;
for(int i=0;i<256;i++){
System.out.println(x++);
System.out.println((int)x);
}
//结论1:java负数使用补码表示,比如0x80表示-128
//补码的运算规则是取反加一
//结论2:当byte转换成int,高位填充数值要看符号位,符号位为1,就填充1,符号位为0就填充0

}
public void testint2byte(){
int x = -128;
int y = 128;
System.out.println((byte)x);
System.out.println((byte)y);
//结论:java int强制转换成byte就是简单截取高位数据
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java byte 编程 工作