加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

JAVA中Integer强转成Byte

(2013-04-28 12:58:26)
分类: java相关
好了,我们下面就来年一下Integer强转成Byte会发生什么情况呢?
先来说一下,我现在使用的电脑是32位的windows系统,那么一个Integer将会占用32位,也就是说,如果我们用有符号数来说,我们这个系统中可以表示最大的Integer为0XEFFFFFFF,而一个Byte所占用的是8个字节,用符号数表示就是0XEF,那么当一个Integer强转成一个Byte会何去何从呢?就让我们来进行下面的这个小例子吧:
public class Integer2Byte {

public static void main(String[] args) {
int intnumber = 0x22113F;
byte byteNumber = (byte) intnumber;
System.out.println(toNumber(byteNumber, 16));
}
//输出结果:3F
我们来解释一下吧:其实一看就明白了,一个Integer类型,它在32位系统中占用的是4个字节,也就是32位,那么Byte占用的却是4个字节,那么当我们强行把Integer转成Byte的时候,系统会怎么样做呢,其实就是最低级的裁切,如上0x22113F很鲁莽地切下了3F,也不经过大脑,电脑嘛,都是这样的,让它切就给人切了,直来直去,OK,就是这个原理了~~明白~~~~
private static char[] a = { '0', '1', '2', '3', '4', '5', '6', '7', '8',
'9', 'A', 'B', 'C', 'D', 'E', 'F' };
public static String toNumber(int number, int n) {
String str = "";
for (int i = 0; i < n; i++) {
if (number == i) {
str = a[i] + str;
return str;
}
}
str = a[number % n] + str;
str = toNumber(number / n, n) + str;
return str;
}

}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有