分类: 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;
}
}
前一篇:android相机自定存储路径
后一篇:android 软键盘关闭