()的优先级高,所以先运行括号里面的
逻辑运算符
//逻辑运算符
public class Demo05 {
public static void main(String[] args) {
//与(and) 或(or) 非(取反)!
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a&&b));//逻辑与运算:两个变量都为真,结果才为true
System.out.println("a || b:"+(a||b));//逻辑或运算:两个变量有一个为真,则结果才为true
System.out.println("!(a && b):"+!(a&&b));//如果是真,则变为假;如果为假则变真。
//短路运算:例如:b&&a,b是false,则之后的操作不需要再进行运行,可以直接输出为false
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);//false
System.out.println(c);//5
//c<4可以直接输出为false,不再运行,否则继续运行c会进行c++操作输出为6
}
}
位运算符
//位运算
public class Demo06 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
--------------------------------------------
A&B 与 =0000 1100 :相同位都是1则是1,否则为0
A|B 或 =0011 1101 :有一个是1则是1
A^B 异或 =0011 0001 :相同为0,不相同则为1
~B 非A即B = 1111 0010 :与B取相反
2*8=16 2*2*2*2
效率极高!!
<< 左移 等于数字*2
>> 右移 等于数字/2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0100 4
0000 1000 8
0001 0000 16
从上面可以看出,何为左移
*/
System.out.println(2<<3);//16
//2左移3位就是:
//0000 0010中,1向左移动三位即变为0001 0000,即16
}
}
+= -= 的操作和注意事项
// += -= 的操作和注意事项
public class Demo07 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b;//a = a+b
a-=b;//a = a-b
System.out.println(a);//10
// 字符串连接符 +
System.out.println(a+b);//30
System.out.println(""+a+b);//1020
// +运算符 两侧只要与一方出现String类型(字符串),就会把另一个操作数都转换成String,再进行拼接
System.out.println(a+b+"");//30
//如果字符串在后面,前面的依旧会进行运算
}
}
三元运算符
//三元运算符:有3个操作数
public class Demo08 {
public static void main(String[] args) {
// x ? y : z
//如果x==true,则结果为y,否则结果为z
int score = 80;
String type = score <60 ?"不及格":"及格";//score是否小于60,则不合格,否则返回合格。
//if同理
System.out.println(type);
}
}