目录
符号 | 作用 | 说明 |
++ | 自增 | 变量的值加1 |
-- | 自减 | 变量的值减1 |
注意事项:
++和--既可以放在变量的后边,也可以放在变量的前边。
单独使用的时候,++和--无论放在变量的前边还是后边,结果都是一样的。
参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者--。
参与操作的时候,如果放在变量的前边,先拿变量做++或者--,后拿变量参与操作。
最常用的用法:单独使用
- int i = 10;
- i++; // 单独使用
- System.out.println("i:" + i); // i:11
- int j = 10;
- ++j; // 单独使用
- System.out.println("j:" + j); // j:11
- int x = 10;
- int y = x++; // 赋值运算,++在后边,所以是使用x原来的值赋值给y,x本身自增1
- System.out.println("x:" + x + ", y:" + y); // x:11,y:10
- int m = 10;
- int n = ++m; // 赋值运算,++在前边,所以是使用m自增后的值赋值给n,m本身自增1
- System.out.println("m:" + m + ", m:" + m); // m:11,m:11
练习:
- int x = 10;
- int y = x++ + x++ + x++;
- System.out.println(y); // y的值是多少?
- /*
- 解析,三个表达式都是++在后,所以每次使用的都是自增前的值,但程序自左至右执行,所以第一次自增时,使用的是
- 10进行计算,但第二次自增时,x的值已经自增到11了,所以第二次使用的是11,然后再次自增。。。
- 所以整个式子应该是:int y = 10 + 11 + 12;
- 输出结果为33。
- */
- 注意:在实际开发时,不建议这样写代码。
关系运算符有6种关系,分别为小于、小于等于、大于、等于、大于等于、不等于。
符号 | 说明 |
== | a==b,判断a和b的值是否相等,成立为true,不成立为false |
!= | a!=b,判断a和b的值是否不相等,成立为true,不成立为false |
> | a>b,判断a是否大于b,成立true,不成立为false |
>= | a>=b,判断a是否大于等于b,成立true,不成立为false |
< | a |
<= | a<=b,判断a是否小于等于b,成立为true,不成立为false |
注意事项:
关系运算符的结果都是boolean类型,要么是true,要么是false。
"=="是判断是否相等的关系,"="是赋值
- int a = 10;
- int b = 20;
- System.out.println(a == b); // false
- System.out.println(a != b); // true
- System.out.println(a > b); // false
- System.out.println(a >= b); // false
- System.out.println(a < b); // true
- System.out.println(a <= b); // true
- // 关系运算的结果肯定是boolean类型,所以也可以将运算结果赋值给boolean类型的变量
- boolean flag = a > b;
- System.out.println(flag); // 输出false
逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是true或false
符号 | 作用 | 说明 |
& | 逻辑与 | a&b,a和b都是true,结果为true,否则为false |
| | 逻辑或 | a|b,a都是false,结果为false,否则为true |
^ | 逻辑异或 | a^b,a和b结果不同为true,相同为false |
! | 逻辑非 | !a,结果和a的结果正好相反 |
- //定义变量
- int i = 10;
- int j = 20;
- int k = 30;
- //& “与”,并且的关系,只要表达式中有一个值为false,结果即为false
- System.out.println((i > j) & (i > k)); //false & false,输出false
- System.out.println((i < j) & (i > k)); //true & false,输出false
- System.out.println((i > j) & (i < k)); //false & true,输出false
- System.out.println((i < j) & (i < k)); //true & true,输出true
- System.out.println("--------");
- //| “或”,或者的关系,只要表达式中有一个值为true,结果即为true
- System.out.println((i > j) | (i > k)); //false | false,输出false
- System.out.println((i < j) | (i > k)); //true | false,输出true
- System.out.println((i > j) | (i < k)); //false | true,输出true
- System.out.println((i < j) | (i < k)); //true | true,输出true
- System.out.println("--------");
- //^ “异或”,相同为false,不同为true
- System.out.println((i > j) ^ (i > k)); //false ^ false,输出false
- System.out.println((i < j) ^ (i > k)); //true ^ false,输出true
- System.out.println((i > j) ^ (i < k)); //false ^ true,输出true
- System.out.println((i < j) ^ (i < k)); //true ^ true,输出false
- System.out.println("--------");
- //! “非”,取反
- System.out.println((i > j)); //false
- System.out.println(!(i > j)); //!false,,输出true
符号 | 作用 | 说明 |
&& | 短路与 | 作用和&相同,但是有短路效果 |
|| | 短路或 | 作用和|相同,但是有短路效果 |
逻辑与&,无论左边真假,右边都要执行。
短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行。
逻辑或|,无论左边真假,右边都要执行。
短路或||,如果左边为假,右边执行;如果左边为真,右边不执行
- int x = 3;
- int y = 4;
- System.out.println((x++ > 4) & (y++ > 5)); // 两个表达都会运算
- System.out.println(x); // 4
- System.out.println(y); // 5
- System.out.println((x++ > 4) && (y++ > 5)); // 左边已经可以确定结果为false,右边不参与运算
- System.out.println(x); // 4
- System.out.println(y); // 4
三元运算符语法格式:
关系表达式 ? 表达式1 : 表达式2;
问号前面的位置是判断的条件,判断结果为boolean型,为true时调用表达式1,为false时调用表达式2,其逻辑为:如果条件成立或者满足则执行表达式1,否则执行表达式2.
举例:
- int a = 10;
- int b = 20;
- int c = a > b ? a : b; // 判断 a>b 是否为真,如果为真取a的值,如果为假,取b的值
案例:
需求:一座寺庙里住着三个和尚,已知他们的身高分别为155cm,183cm,175cm请用程序获取三个和尚的最高身高
- public class OperatorTest02 {
- public static void main(String[] args) {
- //1:定义三个变量用于保存和尚的身高,单位为cm,这里仅仅体现数值即可。
- int height1 = 155;
- int height2 = 183;
- int height3 = 175;
- //2:用三元运算符获取前两个和尚的较高身高值,并用临时身高变量保存起来。
- int tempHeight = height1 > height2 ? height1 : height2;
- //3:用三元运算符获取临时身高值和第三个和尚身高较高值,并用最大身高变量保存。
- int maxHeight = tempHeight > height3 ? tempHeight : height3;
- //4:输出结果
- System.out.println("maxHeight:" + maxHeight);
- }
- }