Java 作为一种面向对象的编程语言,提供了丰富的运算符来进行各种操作。本文将详细介绍 Java 中的各种运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和其他特殊运算符。
一,算术运算符
算术运算符用于执行基本的数学运算,如加减乘除等。Java 支持以下算术运算符:
+加法运算符:用于两个操作数相加。-减法运算符:用于从第一个操作数中减去第二个操作数。*乘法运算符:用于两个操作数相乘。/除法运算符:用于第一个操作数除以第二个操作数。%取模运算符:用于返回第一个操作数除以第二个操作数的余数。++自增运算符:用于将操作数的值增加 1。--自减运算符:用于将操作数的值减少 1。
示例代码:
int a = 10;
int b = 20;
int c = a + b; // c = 30
int d = b - a; // d = 10
int e = a * b; // e = 200
int f = b / a; // f = 2
int g = b % a; // g = 0
a++; // a = 11
b--; // b = 19
二,关系运算符
关系运算符用于比较两个操作数之间的关系,返回一个布尔值(true 或 false)。Java 支持以下关系运算符:
==等于:如果两个操作数相等,则返回 true。!=不等于:如果两个操作数不相等,则返回 true。>大于:如果第一个操作数大于第二个操作数,则返回 true。<小于:如果第一个操作数小于第二个操作数,则返回 true。>=大于等于:如果第一个操作数大于或等于第二个操作数,则返回 true。<=小于等于:如果第一个操作数小于或等于第二个操作数,则返回 true。
示例代码:
int a = 10;
int b = 20;
boolean result1 = (a == b); // result1 = false
boolean result2 = (a != b); // result2 = true
boolean result3 = (a > b); // result3 = false
boolean result4 = (a < b); // result4 = true
boolean result5 = (a >= b); // result5 = false
boolean result6 = (a <= b); // result6 = true
三,逻辑运算符
逻辑运算符用于连接多个布尔表达式,返回一个布尔值。Java 支持以下逻辑运算符:
&&逻辑与:如果两个操作数都为 true,则返回 true。||逻辑或:如果两个操作数中至少有一个为 true,则返回 true。!逻辑非:用于反转操作数的布尔值。
示例代码:
boolean a = true;
boolean b = false;
boolean result1 = (a && b); // result1 = false
boolean result2 = (a || b); // result2 = true
boolean result3 = !a; // result3 = false
四, 位运算符
位运算符用于对整数类型的位进行操作。Java 支持以下位运算符:
&按位与:对两个操作数的每一位执行与操作。|按位或:对两个操作数的每一位执行或操作。^按位异或:对两个操作数的每一位执行异或操作。~按位非:对操作数的每一位执行非操作。<<左移:将操作数的位向左移动指定的位数。>>右移:将操作数的位向右移动指定的位数。>>>无符号右移:将操作数的位向右移动指定的位数,左边空出的位以零填充。
示例代码:
public class BitwiseOperators {
public static void main(String[] args) {
int a = 5; // 二进制:0101
int b = 3; // 二进制:0011
int result1 = a & b; // result1 = 1 (二进制:0001)
int result2 = a | b; // result2 = 7 (二进制:0111)
int result3 = a ^ b; // result3 = 6 (二进制:0110)
int result4 = ~a; // result4 = -6 (二进制:1010)
int result5 = a << 1; // result5 = 10 (二进制:1010)
int result6 = a >> 1; // result6 = 2 (二进制:0010)
int result7 = a >>> 1;// result7 = 2 (二进制:0010)
System.out.println("a & b = " + result1);
System.out.println("a | b = " + result2);
System.out.println("a ^ b = " + result3);
System.out.println("~a = " + result4);
System.out.println("a << 1 = " + result5);
System.out.println("a >> 1 = " + result6);
System.out.println("a >>> 1 = " + result7);
}
}
解释:
-
按位与 (
&):a & b:0101 & 0011 = 0001,即 5 & 3 = 1。
-
按位或 (
|):a | b:0101 | 0011 = 0111,即 5 | 3 = 7。
-
按位异或 (
^):a ^ b:0101 ^ 0011 = 0110,即 5 ^ 3 = 6。
-
按位非 (
~):~a:~0101 = 1010,即 ~5 = -6(在 Java 中,整数使用的是补码表示法)。
-
左移 (
<<):a << 1:0101 << 1 = 1010,即 5 << 1 = 10。
-
右移 (
>>):a >> 1:0101 >> 1 = 0010,即 5 >> 1 = 2。
-
无符号右移 (
>>>):a >>> 1:0101 >>> 1 = 0010,即 5 >>> 1 = 2(对于正数,>>和>>>的效果是相同的)。
通过这些位运算符,您可以在低级别上操作数据位,这在某些性能关键的场景中非常有用。
五,赋值运算符
赋值运算符用于将右侧操作数的值赋给左侧操作数。Java 支持以下赋值运算符:
=简单赋值运算符:将右侧操作数的值赋给左侧操作数。+=加且赋值运算符:将右侧操作数的值加到左侧操作数,并将结果赋给左侧操作数。-=减且赋值运算符:将右侧操作数的值从左侧操作数中减去,并将结果赋给左侧操作数。*=乘且赋值运算符:将右侧操作数的值乘以左侧操作数,并将结果赋给左侧操作数。/=除且赋值运算符:将左侧操作数的值除以右侧操作数,并将结果赋给左侧操作数。%=取模且赋值运算符:将左侧操作数的值对右侧操作数取模,并将结果赋给左侧操作数。&=按位与且赋值运算符:将左侧操作数的值与右侧操作数按位与,并将结果赋给左侧操作数。|=按位或且赋值运算符:将左侧操作数的值与右侧操作数按位或,并将结果赋给左侧操作数。^=按位异或且赋值运算符:将左侧操作数的值与右侧操作数按位异或,并将结果赋给左侧操作数。<<=左移且赋值运算符:将左侧操作数的位左移指定的位数,并将结果赋给左侧操作数。>>=右移且赋值运算符:将左侧操作数的位右移指定的位数,并将结果赋给左侧操作数。>>>=无符号右移且赋值运算符:将左侧操作数的位无符号右移指定的位数,并将结果赋给左侧操作数。
示例代码:
int a = 10;
a += 5; // a = 15
a -= 3; // a = 12
a *= 2; // a = 24
a /= 4; // a = 6
a %= 4; // a = 2
a &= 1; // a = 0
a |= 2; // a = 2
a ^= 3; // a = 1
a <<= 2; // a = 4
a >>= 1; // a = 2
a >>>= 1; // a = 1
六,其他特殊运算符
Java 还提供了一些其他特殊运算符:
?:条件运算符(三元运算符):根据布尔表达式的值返回两个值之一。instanceof运算符:用于测试一个对象是否是一个特定类的实例。.成员访问运算符:用于访问对象的字段和方法。[]数组下标运算符:用于访问数组中的元素。()方法调用运算符:用于调用方法。
示例代码:
// 条件运算符
int a = 10;
int b = 20;
int max = (a > b) ? a : b; // max = 20
// instanceof 运算符
String str = "Hello";
boolean result = str instanceof String; // result = true
// 成员访问运算符
class MyClass {
int value = 10;
void display() {
System.out.println("Value: " + value);
}
}
MyClass obj = new MyClass();
obj.display(); // 输出: Value: 10
// 数组下标运算符
int[] arr = {1, 2, 3};
int element = arr[1]; // element = 2
// 方法调用运算符
public class MyClass {
void myMethod() {
System.out.println("Hello, World!");
}
}
MyClass obj = new MyClass();
obj.myMethod(); // 输出: Hello, World!
通过这些赋值运算符和其他特殊运算符,Java 提供了丰富的操作方式,使编程更加灵活和高效。