package com.dz.operator;
public class Demo05 {
public static void main(String[] args) {
//与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:" +(a&&b)); //逻辑与运算,两个变量都为真,结果才为真;
System.out.println("a || b:" +(a||b)); //逻辑与运算,两个变量有一个为真,则结果为真;
System.out.println("!(a && b:)" +!(a && b)); //如果是真,则变为假,如果假,则变为真。
//短路运算
int c = 5;
boolean d = (c<4 && c++<4); //c<4已经是false的了,所以不会执行c++语句,所以c还是等于5
System.out.println("c:"+c);
System.out.println("d:"+d);
}
}
package com.dz.operator;
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,都是0才为0
A^B = 0011 0001 相同为0,不相同为1
~B = 1111 0010 非运算
*/
/*
面试题 怎么运算 2*8 最快?
2*18 = 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);
}
}
package com.dz.operator;
public class Demo07 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b; //a = a+b 30,20
a-=b; //a = a-b 10,20
System.out.println(a);
System.out.println(b);
//字符串连接符 + , String
System.out.println(a+b);
System.out.println( a +";" +b );
System.out.println("a="+a+";"+"b="+b);
System.out.println(""+a+b); //字符串在前面,后面的会拼接
System.out.println(a+b+""); //字符串在后面,前面的依旧进行运算
}
}
package com.dz.operator;
//三元运算符
public class Demo08 {
public static void main(String[] args) {
//条件运算符 ? :
// x ? y : z
//如果x==true,则结果为y,否则结果为z
int score = 80;
String type = score < 60 ?"不及格" : "及格"; //必须掌握
System.out.println(type);
}
}