面试题1:看下面的程序是否有问题,如果有问题,请指出并说明理由。
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
答:从两方面去回答这个题
b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值
byte类型的变量在进行运算的时候,会自动类型提升为int类型
byte b4 = 3 + 4;
3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了
面试题2:看下面的程序是否有问题,如果有问题,请指出并说明理由。
short s=1;s = s+1;
出错,1是int类型的,所以右边s+1也是int类型的,不能赋给short类型,需要强转;
short s=1;s+=1;
正确,s+=1 底层是 s=(short)s+1;
面试题3: 两个整数变量的交换,不使用第三方变量
第一种方法:
- x = x+y;
- y = x-y; //弊端:可能超出int取值范围
- x = x-y;
复制代码
第二种方法:
- x = x^y;
- y=x^y;
- x=x^y;
- //^的特点:一个数据对另一个数据位异或两次,该数本身不变。
复制代码
面试题4: switch支持的数据类型?
switch可以支持:byte,short,int,long, JDK7新增了 枚举 和 String
|
|