您的位置:

Java运算符详解

介绍

Java是一种广泛使用的计算机编程语言,它提供了丰富多彩的运算符。这些运算符允许程序员进行各种计算,包括算术、逻辑、位和其他类型的运算。在本文中,我们将深入探讨Java运算符的种类、使用方法及其应用。

JAVA赋值运算符

JAVA赋值运算符用于将一个值赋给变量。JVM需要知道要赋的值,所以运算符右侧应该有一个表达式,赋值运算符将表达式计算并将结果赋给左侧的变量。

Java赋值运算符列表:
=         简单的赋值运算符,可以把右边的值赋给左边的变量
+=        加赋值运算符,左右两边的操作数相加后赋值给左边的变量
-=        减赋值运算符,左右两边的操作数相减后赋值给左边的变量
*=        乘赋值运算符,左右两边的操作数相乘后赋值给左边的变量
/=        除赋值运算符,左右两边的操作数相除后赋值给左边的变量
%=        取模赋值运算符,左右两边的操作数取模后赋值给左边的变量
 <<=      左移后赋值运算符,左边操作数的所有位都左移指定数量的位,然后赋值给左边的变量
 >>=      右移后赋值运算符,左边操作数的所有位都右移指定数量的位,然后赋值给左边的变量
 &=       按位与赋值运算符,左右两边的操作数通过按位与运算后赋值给左边的变量
 ^=       按位异或赋值运算符,左右两边的操作数通过按位异或运算后赋值给左边的变量
 |=       按位或赋值运算符,左右两边的操作数通过按位或运算后赋值给左边的变量

JAVA运算符的优先级

Java运算符有不同的优先级,当表达式包含多个运算符时,运算符会按照预定顺序进行计算。最高优先级的运算符先计算,然后是次高优先级的运算符,以此类推。如果表达式中有括号,则括号内的子表达式先计算。

Java运算符的优先级列表:
1. (),括号表达式,最高优先级的运算符,先计算括号内的表达式
2. ++,--,自增和自减
3. +,-,正负号
4. !,逻辑反
5. ~,位反
6. *,/,%,乘、除和取模
7. +,-,加和减
8. <<,>>,>>>,位移
9. <,<=,>,>=,比较运算符
10. ==,!=,相等和不相等运算符
11. &,位与
12. ^,位异或
13. |,位或
14. &&,逻辑与
15. ||,逻辑或
16. ? :,三元运算符
17. =,赋值
18. +=,-=,*=,/=,%=,及其他赋值运算符,最低优先级的运算符,最后计算。

JAVA语言运算符

Java提供了一些特殊的运算符,使程序员能更方便地进行操作。

Java语言运算符列表:
instanceof   instanceof是Java的二元运算符,用于检查左侧的对象是否是右侧类的实例,是返回true,否则返回false。
?

JAVA位运算符

Java位运算符是对二进制数进行操作的运算符,直接对二进制操作,不做转换。

Java位运算符列表:
&    按位与运算符,两个两个操作数的相应位都为1,则该位的结果为1,否则为0。
|    按位或运算符,两个操作数的相应位中只要有一个为1,该位的结果为1,否则为0。
^    异或运算符,两个操作数的相应位不同,该位结果为1,否则为0。
~    取反运算符,反转操作数的位
<<   左移运算符,左操作数的位向左移动,右侧填补0,左移n位相当于乘以2的n次方。
>>   右移运算符,左操作数的位向右移动,如果是正数则在左侧填写0,如果是负数,在左侧填写1,右移n位相当于除以2的n次方。
>>>  无符号右移运算符,左操作数的位向右移动,高位填充0,低位直接去除。

JAVA移位运算符

Java移位运算符可以将操作数的位向左或向右移动指定的位数。在向左移位时,操作数的符号位将向左移动并且左侧空出的位补上0。在向右移位时,右侧空出的位补上0或1(符号位无论如何都不变)。

Java移位运算符列表:
<<   左位移运算符,将操作数的位向左移动指定的位数
>>   右位移运算符,将操作数的位向右移动指定的位数
>>>  无符号右位移运算符,与右移类似,但是左侧用0来补位,符号位也改变了。

JAVA运算符综合实例

Java运算符综合实例:
public class OperatorExample {
    public static void main(String[] args) {
        int number1 = 10;
        int number2 = 5;
        int number3 = 3;
        boolean test = true;

        // 算术运算符
        System.out.println("Addition: " + (number1 + number2));
        System.out.println("Subtraction: " + (number1 - number2));
        System.out.println("Multiplication: " + (number1 * number2));
        System.out.println("Division: " + (number1 / number2));
        System.out.println("Modulus: " + (number1 % number2));

        // 关系运算符
        System.out.println("Greater than: " + (number1 > number2));
        System.out.println("Less than: " + (number1 < number2));
        System.out.println("Greater than or equal to: " + (number1 >= number2));
        System.out.println("Less than or equal to: " + (number1 <= number2));
        System.out.println("Equal to: " + (number1 == number2));

        // 逻辑运算符
        System.out.println("AND: " + (test && (number1 > number2)));
        System.out.println("OR: " + (test || (number1 > number2)));
        System.out.println("NOT: " + !(number1 > number2));

        // 位运算符
        System.out.println("Bitwise AND: " + (number1 & number2));
        System.out.println("Bitwise OR: " + (number1 | number2));
        System.out.println("Bitwise XOR: " + (number1 ^ number2));
        System.out.println("Bitwise NOT: " + ~number1);
        System.out.println("Left Shift: " + (number1 << 1));
        System.out.println("Right Shift: " + (number1 >> 1));
        System.out.println("Unsigned Right Shift: " + (number1 >>> 1));

        // 赋值运算符
        number1 += number2;
        System.out.println("Add and Assign: " + number1);
        number1 -= number2;
        System.out.println("Subtract and Assign: " + number1);
        number1 *= number2;
        System.out.println("Multiply and Assign: " + number1);
        number1 /= number2;
        System.out.println("Divide and Assign: " + number1);
        number1 %= number2;
        System.out.println("Modulus and Assign: " + number1);
        number1 <<= number2;
        System.out.println("Left Shift and Assign: " + number1);
        number1 >>= number2;
        System.out.println("Right Shift and Assign: " + number1);
        number1 &= number2;
        System.out.println("Bitwise AND and Assign: " + number1);
        number1 ^= number2;
        System.out.println("Bitwise XOR and Assign: " + number1);
        number1 |= number2;
        System.out.println("Bitwise OR and Assign: " + number1);
    }
}
以上代码输出如下:
Addition: 15
Subtraction: 5
Multiplication: 50
Division: 2
Modulus: 0
Greater than: true
Less than: false
Greater than or equal to: true
Less than or equal to: false
Equal to: false
AND: true
OR: true
NOT: false
Bitwise AND: 0
Bitwise OR: 15
Bitwise XOR: 15
Bitwise NOT: -11
Left Shift: 20
Right Shift: 5
Unsigned Right Shift: 5
Add and Assign: 15
Subtract and Assign: 10
Multiply and Assign: 50
Divide and Assign: 10
Modulus and Assign: 0
Left Shift and Assign: 160
Right Shift and Assign: 20
Bitwise AND and Assign: 0
Bitwise XOR and Assign: 5
Bitwise OR and Assign: 5

总结

本文介绍了Java运算符的种类、使用方法及其应用。Java运算符有不同的优先级,当表达式包含多个运算符时,运算符会按照预定顺序进行计算。Java位运算符是对二进制数进行操作的运算符,直接对二进制操作,不做转换。而Java移位运算符可以将操作数的位向左或向右移动指定的位数。通过本文,希望读者能够更好地理解Java运算符,并灵活地运用他们在代码中。