笔试题
1.&和&&的区别
①&可视为逻辑运算,可以视为位运算,&&只能当做逻辑运算来运用
②如果两个符号都当做逻辑运算符来使用的时候,区别如下:
&前后两个条件都是true,最终的结果为true
&& 通常情况下和&的执行结果一致
当前面的条件为false的时候,发生短路,最终结果为false
2.用最有效率的方式计算2*8的结果
2<<3 //相当于2乘以2的3次幂
00000010--------00010 000-----16
3.两个变量 int a = 1; int b = 2;如何将两个变量的值 进行互换
//方法一:
public class Test{
public static void main(String[] args){
int a = 1;
int b = 2;
int c = a;
a = b;
b = c;
System.out.println(a);
System.out.println(b);
}
}
//好处:容易理解,值不会出现问题
//坏处:产生了一个新的内存空间
//方法二:
public class Test{
public static void main(String[] args){
int a = 1;
int b = 2;
a = a - b;
b = a - b;
a = a - b;
System.out.println(a);
System.out.println(b);
}
}
//好处在于省略了一个新的空间
//不好在于 相对方法一来讲不是很容易理解,可能在数据加和的过程中产生越界
//方法三:
public class Test{
public static void main(String[] args){
int a = 1;
int b = 2;
a = a ^ b; // 1^2==> 001 (i为true,0为false)
// 010
// ---------
// 011=====>3 (a=3)
b = a ^ b; // 010
------------
// 001====>1 (b=1)
a = a ^ b; // 011
// ----------
// 010=====> (a=2)
//1^2^2==1 一个数字异或同一个数字两次,值不变
System.out.println(a);
System.out.println(b);
}
}