逻辑运算符
// 与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b: " + (b&&a));// 逻辑与运算: 两个变量都为真, 结果才为true
System.out.println("a || b: " + (a||b));// 逻辑与运算: 两个变量都为真, 则结果才true
System.out.println("! (a && b): " + !(a&&b));// 如果是真, 则变为假, 如果是假则变为真
// 注: 短路运算
int c = 5;
boolean d = (c<4)&&(c++<4); // 前半部分为false, 后半部分就不会再执行了
System.out.println(d); // false
System.out.println(c); // 5
面试题及位及运算符
// 两个二进制数据
/**
* A = 0011 1100
* B = 0000 1101
* A&B = 0000 1100 (规则: 两个二进制数字, 对应的位数同为1, 则为1, 反之, 则为0)
* A|B = 0011 1101 (规则: 两个二进制数字, 对应的位数同为0, 则为0, 反之, 则为1)
* A^B = 0011 0001 (规则: 两个二进制值数字, 对应的位数数字相同, 则为0, 反之, 则为1)
* ~B = 1111 0010 (规则: 取反, 见0写1, 见1写0)
*
* 2*8 = 16 2*2*2*2
* 优点: 效率高, 跟底层直接交互
* << *2
* >> /2
*
* 0000 0000 0
* 0000 0001 1
* 0000 0010 2
* 0000 0011 3
* 0000 0100 4
* 0000 1000 8
* 0001 0000 16
*/
System.out.println(2<<3); // 16 专业术语 左移三位
简写逻辑运算符, 字符串, 三目运算符
int a = 10;
int b = 20;
a += b; // a = a + b; // 30
a -= b; // a = a - b; // 10
a *= b; // a = a * b; // 200
a /= b; // a = a / b; // 10
System.out.println(a + b); // 30
System.out.println(a + b + ""); // 30
System.out.println("" + a + b); // 1020
// x ? y : z
// 如果x表达式为true, 则返回y, x表达式为false, 则返回z
// 常见对象的getter和setter里面, 常用
注: 运算符存在优先级 记住()优先级最高就行