package operator;
public class Demo02 {
static void main(String[] args) {
// 与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:"+ (a && b));
// false 逻辑与运算:两个变量都为真,结果才为真
System.out.println("a || b:"+(a || b));
// true 逻辑或运算:两个变量有一个为真,结果才为真
System.out.println("!(a && b):"+!(a && b));
// true 逻辑非运算:如果结果是真,则变为假;如果结果是假,则变为真
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<5); //左边为假,右边不会运行
System.out.println(d); //false
System.out.println(c); //5
//分割线
System.out.println("==========================================");
/*
* A = 0011 1100;
* B = 0000 1101;
*----------------------------------
* A&B = 0000 1100; //与 同1为1,其他为0
* A|B = 0011 1101; //或 有1为1,同0为0
* A^B = 0011 0001; //异或 相同为0,其他为1
* ~B = 1111 0010; //非 取结果的反面
*
* 2*8,怎么运算最快
* 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
System.out.println("==================================================");
int e = 10;
int f = 20;
//e+=f; // e = e+f;
//e-=f; // e = e-f;
System.out.println(e);
//字符串连接符 + 运算符两侧,有一方出现了String类型,会把操作数都转换为String类型
System.out.println(e+f);//30
System.out.println(""+e+f); //1020 先算字符串,后组合
System.out.println(e+f+""); //30 先运算,后成为字符串
System.out.println("=============================================");
//三元运算符
// x ? y : z
// 如果x的值为true,x==true,则结果Y;如果x的值为false,x==false,则结果为z。
int score = 80;
String type = score < 60 ? "不及格" : "及格了"; // 必须掌握
System.out.println(type);
//优先级 ()
e = e*(e+f);
System.out.println(e);
}
}