关系运算和逻辑运算
关系运算(比较)
> >= < <= != == (对象 instanceof 类)
1.区分= 和 == 区别
⑴ =赋值符号 将=后面的结果(值 引用)存入=左边的变量空间内
⑵ = =比较符号 比较= =后面的元素(值 引用)与前面的是否一致
2.比较运算的最终结果为true或false
运算结果为boolean型,只有两种结果(true或false)
逻辑运算
逻辑运算符前后连接的两个都是boolean的值
逻辑运算最终的结果还是boolean
&逻辑与 | 逻辑或 | ^逻辑异或 |
---|---|---|
&&短路与 | 短路或 | !逻辑非 |
| 逻辑或 ||短路或
(3>2) & (3>1) //逻辑与,前面和后面的都要判断出来,才输出
// true true
// true
// -------------------------
(3>4) | (3>5) //逻辑或,前后都要判断,才输出
// false false
// false
// -------------------------
(3>1) ^ (3>2) //异(不同的)--->前后两个结果不一致 就可以
// true true
// false
// -------------------------
!(3>2)
// !true ==> false
//非--取反 将原来的结果取反
// -------------------------
(3>1) && (3>2)
true && true //与两个条件同时满足 如果当第一个条件已经为false 最终肯定是false
true
-------------------------
(3>2) || (3>4) = ?
true || 或两个条件有一个满足 如果当第一个条件为true 最终肯定为true
true
代码演示说明如下
public class luojipaiduan {
public static void main(String[] args) {
boolean result = true;
int i = 1;
int j = 1;
result = ((i++) == 2) & ((j++) == 1);
//与运算,前后都要判断,都要进行运算
System.out.println("i=" + i);//i=2
System.out.println("j=" + j);//i=2
System.out.println(result);
System.out.println("-------------");
int i1 = 1;
int j1 = 1;
result = ((i1 ++) == 2) && ((j1 ++) == 2);
//i++先看等于 再加加,所以(i++) == 2是false
//&&短路与,在前面的为false则直接退出逻辑运算
System.out.println("i1=" + i1);//i=2
System.out.println("j1=" + j1);//i=1
System.out.println(result);
System.out.println("-------------");
int x = 1;
int y = 1;
result = ((++x) == 2) | ((y++) == 2);
//与运算,|前后都要运行,才能结束
System.out.println("x=" + x);//x=2
System.out.println("y=" + y);//y=2
System.out.println(result);
System.out.println("-------------");
int x1 = 1;
int y1 = 1;
result = ((++x1) == 2) || ((y1++) == 2);
//逻辑或运算,前面的为true则直接退出逻辑判断,不执行后面的判断
System.out.println("x1=" + x1);//x1=2
System.out.println("y1=" + y1);//y1=1
System.out.println(result);
}
}
为什么有了||和&&运算,还要|和&运算
程序对于这个运算符的存在,并且长期存在,就预示着,存在即合理
就像上面的|和&代码,不仅要执行逻辑判断,也要执行逻辑判断后面的算数语句。也是一个执行语句。