许多小伙伴们都想去鹅厂、阿里这种大厂,那么大家一定要知道,大厂往往考察你的不会是多么先进的技术,而真正关注你的是你的基础,因为当你进去以后做的是平台开发,一定要了解底层源码以及编码特性才能提高开发效率。
首先是大家经常会遇到的一个问题:
你知道运算符&和&&,|和||的区别么?
&为按位与操作,只有对应的两个二进制数为1,结果为1 位运算是最快的
例如1&1 = 1 1&0 = 0 0&1 = 0 0&0 = 0
|位按位或操作,有一个为1的时候,结果就为1
例如1|0 = 1 0|1=1 1|1=1
&&和||称为短路运算符,在逻辑判断中使用
& 和 && 都可以实现 和 这个功能
区别:& 两边都运算,而 && 先算 && 左侧,若左侧为false 那么右侧就不运算,判断语句中推荐使用 &&,效率更高
| 和 || 和上面类似
区别:||只要满足第一个条件,后面的条件就不再判断,而|要对所有的条件进行判断
用最有效率的方法计算2乘以8?
2 << 3 意思是往左移几位就是乘以2的几次方 2*2的3次方
写个方法,传递两个非0的int数值进去,实现变量交换的方式,有几种方式?
方法一:
public static void swap(int a, int b){
System.out.printf("a=%d, b=%d",a,b);
a = a + b;
b = a - b ;
a = a - b;
System.out.printf("\na=%d, b=%d",a,b);
}
方法二:
public static void swap2(int a, int b){
System.out.printf("a=%d, b=%d",a,b);
a = a^b; // a1 = a^b
b = b^a; // b = b^a^b
a = a^b; // a = a1^b = a^b^a
System.out.printf("\na=%d, b=%d",a,b);
}
说下java数据类型分类?
基础数据类型:byte、short、int、long、float、double、char、boolean
引用数据类型:其他都是引用类型
String和Enum分别是什么类型:引用类型
定义变量 int i = 5; return i++; 和 return ++i; 返回结果是什么
第一个输出的答案为5,第二个输出的答案为6