day03 Java基础

1、面试题

(1)short s=1;s=s+1;

(2)short s=1;s+=1;

上面两行代码有没有问题,如果有,哪里有问题?

答:第一个有问题,s+1是int类型的值,赋值给short的s,编译报错;

第二个s+=1;不等价于s=s+1;而是等价于s=(s的数据类型)(s+1),有一个强制转换的过程。

2、^(异或)的特点:一个数据对另一个数据位异或两次,该数本身不变

例如:int a=10;int b=20;

a^b^b=10;a^b^a=20;

基于这个特点,^的一个应用是可以做一个简单的数据加密。

面试题:用异或运算符交换a、b的值。

  a=a^b;

  b=a^b;//b=a^b^b=a;

  a=a^b;//a=a^b^a=b;

3、<<:左移 左边最高位丢弃,右边补齐0

  >>:右移 最高位是0,左边补齐0;最高位是1,左边补齐1

  >>>:无符号右移 无论最高位是0还是1,左边补齐0

例:24>>2=6;

  24>>>2=6;

  -24>>2=-6;

  -24>>>2=1073741818;

posted @ 2015-06-16 17:02  sunflower627  阅读(190)  评论(0编辑  收藏  举报