面试题
8月4日
第一题:
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是编译失败的呢?为什么呢?
答:"b=b1+b2;"有错误
因为byte类型的数据在运算是会被提升为int类型,会损失精度;两个变量的值在变化,在运行是JVM无法判断了里面的具体值。
第二题:
byte by = 130;有没有问题?有问题如何解决?结果是多少呢?
答:超出了被赋值的数据类型的取值范围,byte的范围是:-128到127。而130不在此范围内,所以报错
解决方法:强制类型转换byte by = (byte)130;或者int by = 130;
第三题:
byte b = 10;
b++;
b = b + 1;
哪句是编译失败的呢?为什么呢?
答:"b=b+1;"会出现错误,会损失精度应该强制类型转换;b++;中隐含了强制类型转换
8月5号
第一道
最有效的方法计算2*8的值
答:用位运算
2<<3
将一个数左移几位相当于乘以2的几次幂,乘以8就相当于左移三位
计算机识别的是二进制,位运算就是二进制之间的运算,所以效率更高。
第二道
实现两个数的互换
基本方法(开发中使用):
中间量
int a = 1;
int b = 2;
int tmpe;
tmpe = a;
a = b;
b = tmpe;
不用中间量
int a = 1;
int b = 2;
a = a + b;
b = a - b;
a = a - b;
使用位异或:
一个数据位异或两次结果还是它本身
int a = 1;
int b = 2;
a = a ^ b;
b = a ^ b;
a = a ^ b;
第三题
byte可以作为switch的表达式吗?
long可以作为switch的表达式吗?
String可以作为switch的表达式吗?
答:可以,不可以,JDK7以后可以
|
|