Java逻辑运算符、三元运算
逻辑运算符:与或非
package Java_Operator;
public class Demo5 {
//逻辑运算符:与或非
public static void main(String[] args) {
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,第一项为假,因此后面的c++项并未执行
System.out.println(d);//false
System.out.println(c);//c++并未执行,因此c仍为5
位运算符
/*
A = 0011 1100
B = 0000 1101
A&B=0000 1100 A与B
A|B=0011 1101 A或B
A^B=0011 0001 异或 同0异1
~B =1111 0010 非
*/
面试题:2*8如何运算最快:
将2 8 拆成2 * 2 * 2 * 2
位运算:<< 左移 >>右移,左移为乘2,右移为除以2
System.out.println(2<<3);//2左移3位,即2*2^3,输出16
运算最快,效率极高
三元运算
a+=b 即 a = a+b
a-=b 即 a = a-b
package Java_Operator;
public class Demo7 {
public static void main(String[] args) {
int a =10;
int b =20;
a+=b;
System.out.println(a);//输出30
System.out.println(a+b);//输出50
}
}
字符串连接符 +(面试题)
sout()中,若 “ ”+,则此时的+为连接作用,连接两端显示,且输出的为String类型
package Java_Operator;
public class Demo7 {
public static void main(String[] args) {
int a =10;
int b =20;
System.out.println(a+b);//输出30
System.out.println(""+a+b);//输出1020
System.out.println(a+b+"");//输出30,此时a+b在前,先运算
System.out.println(a+b+""+b);//输出3020,前面运算,与后面连接
}
}
三元运算符
x ? y : z
如果x true,则结果为y,否则结果为z,输出值要给String赋值
package Java_Operator;
public class Demo8 {
public static void main(String[] args) {
//x ? y : z
//如果x true,则结果为y,否则结果为z
int score = 80;
String type = score<60 ? "不及格" : "及格";
System.out.println(type);
}
}
运算优先级:
http://c.biancheng.net/view/794.html运算优先级