1.位运算
“<<”左移 “>>”右移 “>>>”无符号右移 “&”与运算 “|”或运算 “^”异或运算 “~”取反运算
位运算是直接对整型的二进制进行的运算
<<:在一定范围内,每向左移1位,相当于*2
>>:在一定范围内,每向右移一位,相当于/2
例:最高效方式的计算2*8? 2<<3 或 8<<1
<< 空位补零 被移除的高位丢弃,空缺位补零
>> 被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1
>>> 被移位二进制最高位无论是1还是0,空缺位都补0
&二进制位&进行&运算,只有1&1时结果是1,否则是0
| 二进制位进行 | 运算,只有0 | 0 时结果是零,否则是1
^ 相同二进制位进行 ^ 运算,结果是零;1^1=0,0^0=0;不同二进制位^运算结果是1 1^0=1,0^1=1
~ 正数取反,各二进制码按补码取反;负数取反,各二进制码按补码取反
练习:交换两个变量的值
int num1 = 10;
int num2 = 20
//方式一:
int temp= num1;
num1 = num2;
num2 = temp;
System.out.println("num1 = " + num1 + ",num2 = " + num2);
方式二:
num1 = num1+num2;
num2 = num1 + num2
num1 = num1 - num2
方式三:
num1 = num1 ^ num2;
num2 = num1^ num2;
num1 = num1^ num2;
2.三元运算符
(条件表达式)?表达式1:表达式2
条件表达式的结果为boolean类型
根据表达式真或假,决定执行表达式1还是表达式2
如果表达式为true,则执行表达式1
如果表达式为false,则执行表达式2
获取两个整数的较大值
int m =12;
int n = 5;
int max = (m>n)?m : n;
System.out.println:(max);
表达式1和表达式2要求是一致的
凡是使用三元运算符的,都可以用if--else,反之不成立
3.运算符的优先级
()
4.流程控制
顺序、分支、循环结构
if-else 结构
第一种:
if (条件表达式){
执行表达式
}
第二种:
if(条件表达式){
执行表达式1
}else{
执行表达式2
}
第三种:n选一
if(条件表达式){
执行表达式1
}else if (条件表达式){
执行表达式2
}else if(条件表达式3)
}
……
else{
执行表达式n
}
Scanner
如何从键盘获取不同类型的变量:需要使用Scanner
具体步骤
导包:Import java.util.Scanner;
Scanner的实例化:Scanner scan = new Scanner(Systan.in);
调用Scanner类的相关方法(next()/ nextXxx()),来获取指定类型的变量
注意:需要根据相应的方法,来输入指定类型的的值。如果输入的数据类型与要求的类型不匹配时会报异常导致程序终止。