黑马程序员技术交流社区
标题:
第一周面试题小结
[打印本页]
作者:
{黑马}
时间:
2015-8-8 20:01
标题:
第一周面试题小结
1. Java之父 -- 詹姆斯·高斯林(James Gosling)
2.进制转换问题
byte b2 = (byte)130;
System.out.println(b2);//-126
解释:
byte b2 = (byte)130;
数据:130默认是int类型的十进制数据。
第一步:十进制的130转换成二进制数据。
128 64 32 16 8 4 2 1
1 0 0 0 0 0 1 0
第二步:130在内存中的表示形式,你做了截取(因为强制转换成byte类型,所以截取成一个字节!)
00000000 00000000 00000000 10000010 ——>补码
截取后的结果是:
10000010 (补码)
第三步:二进制数据是10000010
通过观察,我们发现这是一个负数。
补码:1 0000010
反码:1 0000001
原码:1 1111110
最终的结果是:
1 1111110
---------------------------------------------------------------
byte b3 = (byte)300;
System.out.println(b3);//44
解释:
byte b3 = (byte)300;
二进制:
00000000 00000000 00000001 00101100 (补码)
截取后:
00101100(补码)
3.类型转换问题
A:
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
byte b4 = 3 + 4;
解释:byte b3 = b1 + b2;报错!!!
byte类型不直接参与运算,在运算过程中,byte类型会自动提升为int类型;
b1+b2的值是int类型的,把int类型的值赋值给byte类型的变量可能会损失精度。
所以,在编译时,会报错!!!
而byte b4 = 3 + 4;是常量参与运算,编译器会先计算值,再判断该值是否是左边类型能够表示的范围,如果是,则不报错!
B:
short s = 1;
s = s + 1;
和
short s = 1;
s+=1;
有问题吗?为什么呢?
必须有!编译时在 s = s + 1; 报错!!
原因:s是short类型,1默认的是int类型,在运算过程中,会自动把short类型提升为int类型,
s+1的结果是int类型,把int类型的值赋值给short类型的变量可能会丢失精度。
而s+=1; += 这种赋值运算符中隐含了强制转换,既s=(short)(s+1);
4. 运算符问题
A:请用最有效率的代码写出2乘以8
2<<3
B:交换两个变量
位^运算符
a = a ^ b;
b = a ^ b;
a = a ^ b;
作者:
晨曦遇晓
时间:
2015-8-8 21:46
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
作者:
shuguang
时间:
2015-8-8 22:00
总结的很好,值得学习!赞一下
作者:
furuikai
时间:
2015-8-8 22:26
赞一个!!!!
作者:
cemabenteng
时间:
2015-8-8 23:38
这几道面试题一般不会出,大多数题是集合,IO流,多线程,反射那里了,面向对象不会单独出题,但是是基础,很重要
作者:
唧唧歪不正
时间:
2015-8-8 23:52
顶帖。。。。。。。。
作者:
lvfubin
时间:
2015-8-8 23:53
加油。
作者:
蓝蓝
时间:
2015-8-9 01:03
赞!!!!
作者:
北方童话
时间:
2015-8-9 19:56
顶顶顶顶顶
作者:
yytian
时间:
2015-8-9 20:09
well done ^^^
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2