自增自减运算符
- ++和-- 无论是放在变量的前边还是后边,单独写一行结果是一样的
public class day4_02 {
public static void main(String[] args) {
int x = 10;
//后++:先用后加
//先把x变量中的值拿出来用,赋值给y,然后再进行自增。
//赋值给y的值是自增前的。
int y = x++; // x=11 y=10
//先++:先加后用
//先把x进行自增,然后把自增后的结果赋值给左边的变量
//先把x自增,变成12,然后再把自增之后的12赋值给z
int z = ++x;
System.out.println("x:"+ x); //12
System.out.println("y:" +y); //10
System.out.println("z:" + z); //12
}
}
赋值运算符
public class day4_03 {
public static void main(String[] args) {
//+=
//规则:将左边和右边进行相加,然后再把结果赋值给左边
int a =10;
int b=20;
//把a+b,再把结果赋值给左边的变量a
a += b;
//等同于 a = (int)(a + b);
System.out.println(a); //30
System.out.println(b); //20
//细节:
//+=,-=,*=,/=,%= 底层都隐藏了一个强制类型转换I
short s = 1;
//把左边和右边进行相加,得到结果2,再赋值给左边的变量
s+= 1;
//等同于:s=(short)(s+1);
System.out.println(s); //2
}
}
关系运算符
- 注意事项:关系运算符的结果都是boolean类型,要么是true,要么是false。千万不要把“==”误写成“=”。
逻辑运算符
-
在数学中,一个数据x,大于5,小于15,我们可以这样来进行表示:5< x <15。
-
在java中,需要把上面的式子先进行拆解,再进行合并表达。
-
拆解为:x > 5 和 x < 15
合并后:x > 5 & x < 15
public class day4_04 {
public static void main(String[] args) {
//1.& 并且
//两边都为真,结果才是真
System.out.println(true & true);//true
System.out.println(false & false);//false
System.out.println(true & false);//false
System.out.println(false & true);//false
//2.|或者
//两边都为假,结果才是假
System.out.println(true | true);//true
System.out.println(false |false);//false
System.out.println(true |false);//true
System.out.println(false | true);//true
//^异或
//相同为false,不同为true
//了解一下即可
System.out.println(true ^ true);//false
System.out.println(false ^ false);//false
System.out.println(true ^ false);//true
System.out.println(false ^ true);//true
//! 逻辑非 取反
//提示:
//取反的感叹号不要写多次,要么不写,要么只写一次
System.out.println(!false);//true
System.out.println(!true);//false
}
}
短路逻辑运算符
-
&
|
,无论左边true false,右边都要执行。 -
&&
||
,如果左边能确定整个表达式的结果,右边不执行。 -
&&
:左边为false,右边不管是真是假,整个表达式的结果一定是false。 -
||
:左边为true,右边不管是真是假,整个表达式的结果一定是true。 -
这两种情况下,右边不执行,提高了效率。
最常用的逻辑运算符:&&
,||
,!
public class day4_05 {
public static void main(String[] args) {
//1. &&
//运行结果跟单个&是一样的
//表示两边都为真,结果才是真
System.out.println(true && true);//true
System.out.println(false && false);//false
System.out.println(false && true);//false
System.out.println(true && false);//false
//2. ||
//运行结果跟单个|是一样的
//表示两边都为假,结果才是假
System.out.println(true || true);//true
System.out.println(false || false);//false
System.out.println(false || true);//true
System.out.println(true || false);//true
//3.短路逻辑运算符具有短路效果
//简单理解:当左边的表达式能确定最终的结果,那么右边就不会参与运行了
int a = 10;
int b = 10;
boolean result = ++a < 5 && ++b < 5;
System.out.println(result);//false
System.out.println(a);//11
System.out.println(b);//10
}
}
三元运算符
- 格式: 关系表达式 ? 表达式1 : 表达式2
计算规则:
首先计算关系表达式的值
如果值为true,表达式1的值就是运算结果
如果值为false,表达式2的值就是运算结果
运算符优先级