一、逻辑运算符
用于连接多个条件(多个关系表达式),最终的结果也是一个boolean值。
二、类型
三、&&和&
1、短路与&& 条件1 &&条件2 两个条件都为true,结果为true
2、逻辑与& 条件1 &条件2 两个条件都为true,结果为true
package demo02;
public class Logic {
public static void main(String[] args) {
//&&
int a1 = 10;
int a2 = 20;
//&&第一个条件为false,第二条件不判断
if (a1 > 20 && ++a2 < 21 ) {
System.out.println("条件执行成功");
}
System.out.println("a1=" + a1 + "\ta2=" + a2);
//&&第一个条件为false,第二条件依然判断
if(a1 > 20 & ++a2 < 21){
System.out.println("条件执行成功2");
}
System.out.println("a1=" + a1 + "\ta2=" + a2);
}
}
四、|| 与 |
1、短路或|| 条件1 ||条件2 两个条件中只要有一个成立,结果为true 。
2、|逻辑或 条件1|条件2 只要有一个条件成立,结果为true
package demo02;
public class Logic02 {
public static void main(String[] args) {
int a1 = 10;
int a2 = 20;
//||第一个条件为false,第二条件不判断
if (a1 < 20 || ++a2 < 21 ) {
System.out.println("条件执行成功");
}
System.out.println("a1=" + a1 + "\ta2=" + a2);
//|第一个条件为false,第二条件依然判断
if(a1 < 20 | ++a2 < 21){
System.out.println("条件执行成功2");
}
System.out.println("a1=" + a1 + "\ta2=" + a2);
}
}
五、!取反与 ^
! 非(取反) !条件 如果条件本身成立, 结果为false,否则为true。
^叫逻辑异或,当a和b不同时,则结果为true, 否则为false。
package demo02;
public class Logic03 {
public static void main(String[] args) {
int a = 10;
int b = 20;
//!的使用
System.out.println(a > b);
System.out.println(!(a > b));
//当两个条件都为true时,结果为false,否则为true
if (a < b ^ b > a ) {
System.out.println("执行成功");
}
if (a < b ^ b < a) {
System.out.println("执行成功2");
}
}
}
练习一
package demo02;
public class Test04 {
public static void main(String[] args) {
//判断x,y的值
int x = 5;
int y = 5;
if (x++ == 6 & ++y == 6) {
x = 11;
}
System.out.println("x=" + x + "\ty=" + y); //6 , 6
//判断x1,y1的值
int x1 = 5;
int y1 = 5;
if (x1++ == 6 && ++y1 == 6) {
x1 = 11;
}
System.out.println("x1=" + x1 + "\ty1=" + y1 );//6 ,5
//判断x2,y2的值
int x2 = 5;
int y2 = 5;
if (x2++ == 5 | ++y2 == 5) {
x2 = 11;
}
System.out.println("x2=" + x2 + "\ty2=" + y2 );//11 ,6
//判断x3,y3的值
int x3 = 5;
int y3 = 5;
if (x3++ == 5 || ++y3 == 5) {
x3 = 11;
}
System.out.println("x3=" + x3 + "\ty3=" + y3 );//11 ,5
}
}
练习二
package demo02;
public class Test05 {
public static void main(String[] args) {
boolean x = true;
boolean y = false;
short z = 46;
if ((z++ == 46) && (y = true)) z++;
if ((x = false)||(++z == 49)) z++;
System.out.println("z="+ z);//50
}
}