JavaSE学习(二)运算符、if语句

作者 Zhendong Ho 日期 2019-01-15
JavaSE学习(二)运算符、if语句

逻辑运算符

逻辑与 &

//逻辑与 &
int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b & b < c); //true & true = true
System.out.println(a < b & b > c); //true & false = false
System.out.println(a > b & b < c); //false & true = false
System.out.println(a > b & b > c); //false & false = false

逻辑或 |

//逻辑与 |
System.out.println(a < b | b < c); //true | true = true
System.out.println(a < b | b > c); //true | false = true
System.out.println(a > b | b < c); //false | true = true
System.out.println(a > b | b > c); //false | false = false

逻辑异或 ^

//逻辑异或 ^ 两边相同为false,两边不同为true
System.out.println(a < b ^ b < c); //true ^ true = false
System.out.println(a < b ^ b > c); //true ^ false = true
System.out.println(a > b ^ b < c); //false ^ true = true
System.out.println(a > b ^ b > c); //false ^ false = false

&&和&的区别

  • 最终结果是相同的,&&可以提高一定的效率。
  • &&具有短路效果,如果左边是false,右边不执行。&无论左边是否为false,右边都要执行。
  • ||具有短路效果,如果左边为true,右边不执行。|无论左边是否为true,右边都要执行。
int x = 3;
int y = 4;
//System.out.println((++x == 3) & (++y == 4)); //false & false = false
//System.out.println("x = " + x); //x = 4
//System.out.println("y = " + y); //y = 5

System.out.println((++x == 3 && (++y == 4)); //false && false = false
System.out.println("x = " + x); //x = 4
System.out.println("y = " + y); //y = 4

位运算符

  • 按位与 &:有0则0。
  • 按位或 |:有1则1。
  • 按位异或 ^:相同则0,不同则1。
  • 按位取反 ~:按位取反。

位异或运算符的特点

一个数据对另一个数据位异或两次,该数本身不变。

System.out.println(5 ^ 10 ^ 10);	//5
System.out.println(5 ^ 10 ^ 5); //10

实现两个整数变量的交换

int x = 10;
int y = 5;
//不需要定义第三方变量,有弊端,有可能会超出int的取值范围
/*x = x + y; //10 + 5 = 15
y = x - y; //15 - 5 = 10
x = x - y; //15 - 10 = 5*/

//不需要第三方变量,通过 ^ 来做
x = x ^ y; //10 ^ 5
y = x ^ y; //10 ^ 5 ^ 5 = 10
x = x ^ y; //10 ^ 5 ^ 10 = 5

移位运算

  • 左移 <<:左边最高位丢弃,右边补齐0。
  • 右移 >>:最高位是0,左边补齐0;最高位是1,左边补齐1。
  • 无符号右移 >>>:无论最高位是0还是1,左边补齐0。
//左移,向左移动几位就是乘以2的几次幂
System.out.println(12 << 1); //24
System.out.println(12 << 2); //48

//右移,向右移动几位就是除以2的几次幂
System.out.println(12 >> 1); //6
System.out.println(12 >> 2); //3

最有效率的算出2 * 8的结果

System.out.println(2 << 3);//2 * 2 ^ 3,把2转为二进制,向左移动3位,直接操作二进制数

键盘录入的基本格式

import java.util.Scanner;
class Demo2_Scanner {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //创建键盘录入对象
int x = sc.nextInt(); //将键盘录入的数据存储在x中
System.out.println(x);
}
}

switch语句的格式

基本数据类型可以接收:byte、short、char、int。

引用数据类型可以接收:枚举(JDK1.5)、String(JDK1.7)。

if语句和switch语句的区别

  • switch语句建议判断固定值的时候用。
  • if语句建议判断区间或范围的时候用。