目录
- 算术运算符
 - 关系运算符
 - 逻辑运算符
 - 赋值运算符
 - 条件运算符
 - 运算符优先级
 
算术运算符
| 运算符 | 描述 | 
|---|---|
| + | 两数相加 | 
| – | 两数相减 | 
| * | 两数相乘 | 
| / | 两数相除 | 
| % | 取模,返回两数相除的余数 | 
| ++ | 自加一 | 
| – – | 自减一 | 
public class User {
    public static void main(String[] args) {
        int a = 20;
        int b = 10;
        System.out.println(a + b);
        System.out.println(a - b);
        System.out.println(a * b);
        System.out.println(a / b);
        System.out.println(b % a);
    }
}
输出:
30
10
200
2
10
++,- -运算符
当++、- -出现在变量之前,先自加、自减1,再做赋值运算
public class User {
    public static void main(String[] args) {
        int a = 10;
        int b = ++a;
        System.out.println(a);// 11
        System.out.println(b);// 11
    }
}
当++,- -出现在变量之后,先做赋值运算,再自加、自减1
public class User {
    public static void main(String[] args) {
        int a = 10;
        int b = a++;
        System.out.println(b);// 10
        System.out.println(a);// 11
    }
}
扩展
+运算符有两个作用
①求和
public class User {
    public static void main(String[] args) {
        System.out.println(3 + 4);// 7
    }
}
②字符串拼接
public class User {
    public static void main(String[] args) {
        System.out.println("Hello" + "Java" + "World");// HelloJavaWorld
    }
}
关系运算符
| 运算符 | 描述 | 结果 | 
|---|---|---|
| == | 判断值是否相等 | 是返回true,不是返回false | 
| != | 判断值是否不相等 | 是返回trut,不是返回false | 
| >= | 判断左边的值是否大于等于右边 | 是返回true,不是返回false | 
| <= | 判断左边的值是否小于等于右边 | 是返回true,不是返回false | 
| > | 判断左边的值是否大于右边 | 是返回true,不是返回false | 
| < | 判断左边的值是否小于右边 | 是返回true,不是返回false | 
public class User {
    public static void main(String[] args) {
        int a = 20;
        int b = 10;
        System.out.println(a == b);
        System.out.println(a != b);
        System.out.println(a > b);
        System.out.println(a < b);
        System.out.println(a <= b);
        System.out.println(a >= b);
    }
}
输出:
false
true
true
false
false
true
逻辑运算符
| 运算符 | 描述 | 结果 | 
|---|---|---|
| & | 与 | 两边都为True,结果才为True | 
| │ | 或 | 有一边为True,结果就为True | 
| ! | 非 | 真值变假,假值变真 | 
| && | 逻辑与 | 两边都为True,结果才为True | 
| ││ | 逻辑或 | 有一边为True,结果就为True | 
public class User {
    public static void main(String[] args) {
    boolean a1 = true;
    boolean a2 = false;
    System.out.println(a1 && a2);
    System.out.println(a1 || a2);
    System.out.println(!a1);
    }
}
输出:
false
true
false
与&和逻辑与&&
public class User {
    public static void main(String[] args) {
        // 与&
        int a = 0;
        int b = 1;
        // 当左边表达式为false,右边的表达式依旧会执行
        System.out.println(a > b & b > a++);// false
        System.out.println(a); // 1
        // 逻辑与&&
        int c = 0;
        int d = 1;
        // 当左边的表达式为false,右边的表达式不执行(短路现象)
        System.out.println(c > d && d > c++);// false
        System.out.println(c); // 0
    }
}
或|和逻辑或||
public class User {
    public static void main(String[] args) {
        // 或|
        int a = 0;
        int b = 1;
        // 当左边表达式为true,右边的表达式依旧会执行
        System.out.println(a < b | b > a++);// true
        System.out.println(a); // 1
        // 逻辑或||
        int c = 0;
        int d = 1;
        // 当左边的表达式为true,右边的表达式不执行(短路现象)
        System.out.println(c < d || d > c++);// true
        System.out.println(c); // 0
    }
}
总结
与&和或|要对所有条件都进行判断(无论左边是真假,右边都会执行)
逻辑与 &&当左边的表达式为false,右边的表达式不执行
逻辑或 || 当左边的表达式为true,右边的表达式不执行
什么时候使用&&,什么时候使用&
从效率方面来说,&&比&的效率高一些。
因为与&不管第一个表达式结果是什么,第二个表达式一定会执行。
大部分情况下都建议使用短路与&&,只有当既需要左边表达式执行,又需要右边表达式执行的时候,才会选择与&。
赋值运算符
| 运算符 | 描述 | 
|---|---|
| = | 直接赋值 | 
| += | 加后赋值 | 
| -= | 减后赋值 | 
| *= | 乘后赋值 | 
| /= | 除后赋值 | 
| %= | 取模后赋值 | 
public class User {
    public static void main(String[] args) {
    int a = 2;
    int b = 1;
    System.out.println(a += b);//a = a + b
    System.out.println(a -= b);//a = a - b
    System.out.println(a *= b);//a = a * b
    System.out.println(a /= b);//a = a / b
    System.out.println(a %= b);//a = a % b
    }
}
输出:
3
2
2
2
0
条件运算符
表达式1?表达式2:表达式3
先判断表达式1的值,若为真则将表达式2的值做为整个表达式的值;若为假则将表达式3的值做为整个表达式的值。
举个栗子:判断a和b的大小,a>b如果成立max=a的值,不成立则max=b的值
public class User {
    public static void main(String[] args) {
        int a = 1, b = 2;
        int max;
        max = a > b?a:b;
        System.out.println(max);
    }
}
输出:
2
运算符优先级
Java中用到的运算符除了上面介绍的常用的赋值运算符、算术运算符、关系运算符、逻辑运算符、条件运算符以外,还有其他的运算符。当一个表达式出现多种运算符符号,会按照运算符的优先级来决定运算顺序,Java中运算符优先级见下表
| 运算符 | 描述 | 优先级 | 
|---|---|---|
| [] () . , ; | 分隔符 | 1 | 
| Instanceof ++ – – ! | 对象归类、自增自减、非运算 | 2 | 
| * / % | 算术乘除运算 | 3 | 
| + – | 算术加减运算 | 4 | 
| >> << >>> | 移位运算 | 5 | 
| < <= > >= | 大小关系运算 | 6 | 
| == != | 相等关系运算 | 7 | 
| & | 按位与运算 | 8 | 
| ^ | 按位异或运算 | 9 | 
| │ | 按位或运算 | 10 | 
| && | 逻辑与运算 | 11 | 
| ││ | 逻辑或运算 | 12 | 
| ? : | 三目条件运算 | 13 | 
| = += -= *= /= &= | 赋值运算 | 14 | 
	声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
		
评论(0)