/**
- 逻辑运算符:
- 与(&&):并且的含义,此种情况只有在&&两侧值都为true时结果才为true,否则结果为false
- 或(||): 或者的含义,此种情况下||两侧有一侧的值为true,结果就为true,两侧都为false则结果才为false;
- 非(!) : 取反的含义,在值前使用,若值为true,结果为false;若值为false,则结果为true
- 注意事项:
- 1、逻辑运算符的两侧值都为Boolean类型;
- 2、与、或操作需要符号左右两侧都要有值,非只要一个boolean类型的值就可以;
- 3、逻辑运算符可以多个一起使用:例如:条件1 && 条件2 &&条件3
- 与、或运算符具有短路的效果:与(&&):若左侧的值为false,则结果为false,右侧的值不执行;
-
或(||):同理,若左侧的值为false,则结果为false
- 备注:在java中比较运算符不支持多个运算符一起使用,则可以使用逻辑运算符进行拆分;
- 例如:3<a<5:在java中是不支持此种比较的,则可拆分成 3 < a && a < 5
*/
public class Demo06Logic {
public static void main(String[] args){
/**
* 与(&&)操作
*/
int a = 6;
System.out.println(a>5 && a<7); //true
System.out.println(a>8 && a <10); //false
System.out.println((a>3 && a < 5)); //fasle
System.out.println("=========================================");
/**
* 或(||)操作
*/
int b = 9;
System.out.println(b>5 || b<7); //true
System.out.println(b<8 || a <10); //true
System.out.println((b<3 || b < 5)); //fasle
System.out.println("=========================================");
/**
* 非(!)操作
*/
int c = 5;
System.out.println(!(c>5)); //true:c>5值为fasle,执行非操作后为true
System.out.println(!(c<8)); //false:c<8值为true,执行非操作之后为fasle
System.out.println("=========================================");
/**
* 短路效果验证
*/
int d = 8;
System.out.println("d的初始值:"+d);
System.out.println(d<5 && ++d>7);
/**
* d<5值为false,短路原则,则不继续往下执行,++d<7未执行,d为自增1,值仍为8
*/
System.out.println("d:"+d);
System.out.println(d>5 && ++d<7);
/**
* d>5值为true,则继续往下执行前++混合使用,则先自增1,d=9,所以d<7值为false
*/
System.out.println("d:"+d);
int e = 6;
System.out.println("e的初始值:"+e);
System.out.println(e<8 || ++e <10);
/**
* e<8值为true,根据或运算符一侧为true则结果为true的原则和短路原则,则结果为true,且++e<10未执行,
* e未自增1,值仍为6
*/
System.out.println("e: "+e);
System.out.println((e<3 || ++e > 6));
/**
* e<3值为false,根据或运算符两侧为false结果才为false的原则,则继续执行,++e > 6,根据优先级,限制性++e,e自增1
* e的值为7,7>6值为true,则结果为true
*/
System.out.println("e: "+e);
System.out.println("=========================================");
/**
* 比较:5<f<9
*/
int f = 9;
System.out.println("5<f<9 的比较结果:"+(f>5 && f<9));
System.out.println("6<f<8 的比较结果:"+(f>6 || f<10));
System.out.println("=========================================");
//备注:单个&和|不具备短路效果,则不管左侧执行结果是true或false,结果右侧都会执行
int g = 8;
System.out.println("g的初始值:"+g);
System.out.println(g<5 & ++g>7);
System.out.println("g:"+g);
System.out.println(g>5 & ++g<7);
System.out.println("g:"+g);
int h = 6;
System.out.println("h的初始值:"+h);
System.out.println(h<8 | ++h <10);
System.out.println("h: "+h);
System.out.println((h<3 | ++h > 6));
System.out.println("h: "+h);
System.out.println("=========================================");
}
}