请教几道java面试题底层的问题
1.System.out.println(i+'0'); i=0,输出结果为什么等于48,一个char字符unicode中'0'是这样吗?
不知道我这种说法对不对,我想知道这些机制能不能在API帮助文档中查到?
2.int c=a&b; a是1,b是2,a和b按位与得出的结果是多少?
3.int num=32;
System.out.println(num >> 32); 我该如何去理解?
[解决办法]
1.字符0 在转换成整型数据时就是48,编译奇幻自动类型转换的(低——高) 高到低的要强制类型转换
2. 是0 1的二进制编码0000000000000...1(前面31个0) java的int型是4字节的
2的二进制编码是00000000000...10(前面30个0)
因此&的话是0 c的结果也是0
3.》这个是想有移动的位数 当然指的是2进制 但是注意int 型刚好是32位 相当于没移动 java处理是向右移动 但是位数不够的话 会从最左边再向右移动。
[解决办法]
对不起 上面第三个回答的有问题 因为int是32个二进制位 所以java会将你移动的数据%32 然后在进行左移或者右移。 32%32=0 所以相当于没移动 所以结果输出还是32
[解决办法]
'0'的unicode值是48 所以i+'0'= 0+48=48;
第2题 第3题 参考:http://blog.csdn.net/sandy1983/article/details/4565977