黑马程序员技术交流社区

标题: JAVA基础两个面试题 [打印本页]

作者: 刘印    时间: 2015-11-1 23:36
标题: JAVA基础两个面试题
1,请用最高的效率写出2乘以8的式子?
答案:2左移3位: 2<3
2,请把两个数据交换:例如 int a = 10; int b = 20;  交换结果: a = 20 ; b = 10;
这里有两种方法:1
                        int temp = a;
                            a = b;
                            b = temp;

                        2.

作者: 刘印    时间: 2015-11-1 23:38
2  a = a^ b;
    b = a^ b;
    a = a^ b;    或者
                              b = a ^ b;
                              a  = a^  b;
                              b   = a^  b;
作者: hbcoding    时间: 2015-11-2 10:29
第二题不太懂,考察的是什么知识点
作者: young_ants    时间: 2015-11-2 10:36
还有一种方式不常用:  这种方式不推荐用的原因是:有可能超出int的取值范围!
a = a + b;
b = a -  b;
a = a -  b;
作者: ln0491    时间: 2015-11-2 11:52
变量交换................
作者: tczhu12345    时间: 2015-11-2 12:11
很简单啊.
作者: 雨来    时间: 2015-11-2 12:37
sop(2<<3);
作者: JAVA_BOY_2015    时间: 2015-11-2 16:09
hbcoding 发表于 2015-11-2 10:29
第二题不太懂,考察的是什么知识点

一个数连续跟同一个数异或两次还是之前的数
作者: xing912    时间: 2015-11-2 16:14
感谢分享
作者: 骏骏e    时间: 2015-11-2 16:31
第二个考的是 异或啊 一个数异或两次 还是他本身啦!!!
作者: 达达达    时间: 2015-11-2 16:47
2楼才是正解
作者: 小鱼儿211    时间: 2015-11-2 20:14
第三种方法:
a=a+b;
b=a-b;
a=a-b;
这种方法不推荐,因为a+b可能会超出int取值范围
作者: 逐浪之鱼    时间: 2015-11-2 20:54
hbcoding 发表于 2015-11-2 10:29
第二题不太懂,考察的是什么知识点

位运算和异或运算,转成二进制就好理解了。
作者: 我若为神    时间: 2015-11-2 21:04
66666666666666




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2