1 java中的异或和位运算符
^ 异或表示相同为false,不同为true;例如 true ^ false为true;true^true为false。
&& 和 & 他们所得到的结果相同,但是前者表示短路与,即如果左边为false则右边就不再执行,同理,|| 与 | 表示的意思相同
位运算符将所有的数都看作二进制计算,此时8421口诀就很方便了。
上述位运算符都很简单,但是按位取反有一定难度,这里解释一下^6如何求?
首先6的二进制,00000000 00000000 00000000 00000110
取反 11111111 11111111 11111111 11111001(这里得到的是补码)
取反后我们发现这个数很大啊!!其实之前提到过,计算机计算都是按照补码进行计算的,所以我们在这里需要将补码还原回去,补码等于反码+1,所以反码等于补码-1
反码 11111111 11111111 11111111 11111000
源码 10000000 00000000 00000000 00000111
等于-7
一个数被另一个数据异或2次,这个数本身不变,例如System.out.println(5 ^ 10 ^ 10);结果还是5
面试题:交换2个变量
2 java中的左移和右移和无符号右移
注意一下,如果给的是负数,就要先求它的补码,再进行计算,得到的结果依然是补码,需要转换为原码,正数的原反补相同,补码——》反码:补码-1;反码——》原码:符号位不变,其余取反即可。
作用:
如果直接计算2 * 8,计算机会将2转化为2进制,8转换为2进制,但是我们知道左移几位,就等于当前数字乘2的几次方,所以2*8 等于2*2的三次方,就等于2向左移动3位。
3 java中的键盘输入
(1)导包
import java.util.Scanner;
(2)创建Scanner对象
Scanner sc = new Scanner(System.in);
(3)输入数据
int x = sc.nextInt();
4 java的程序运行流程结构
有3种,顺序,选择(if,switch),循环(for,while)
这里需注意一点,当if后面不加{}时,if默认控制离他最近的一条语句。
那为什么这里int x = 10;会出错呢?因为int x = 10;是2条语句,很重要,自己之前从来没有仔细思考过,所以if就报错了。
三元运算符和if语句作用是一样的,完全可以替代,以后注意多采用三元运算符实现代码,只有一种情况不能用三元运算符,就是当if语句中出现输出语句时,三元运算符不可以替代,因为三元运算符不能输出语句,但是我们用字符串代替。
关于switch语句,注意一下,switch可以接受的数据类型不是很多,首先他可以接受可以转化为int的数据类型,有byte,short,char,int。但是long不可以,其次它还可以接受char类型,还有枚举类型,除此之外,在JDK1.7之后,增加了一种类型就是String类型。
switch在运用的时候有2个地方新手经常犯错误,其一,每个case后面需要加上break;语句。其二,应该加上default:语句,加上的作用在于提示错误值。