Java 中的运算符分为以下几类,每类运算符都有特定的用途和规则。
1. 算术运算符
算术运算符用于执行基本的数学运算,包括加、减、乘、除和取模等。算术运算符可以用于基本数据类型(如 int、double 等)和它们的包装类(如 Integer、Double 等)。
- 加法运算符 +:用于两个数值相加。例如,5 + 3 的结果是 8。
- 减法运算符 -:用于两个数值相减。例如,10 - 2 的结果是 8。
- 乘法运算符 *:用于两个数值相乘。例如,5 * 3 的结果是 15。
- 除法运算符 /:用于两个数值相除。例如,10 / 2 的结果是 5。在整数除法中,结果为整数,小数部分会被舍去。
- 取模运算符 %:用于两个数值相除,并返回余数。例如,7 % 3 的结果是 1,因为 7 除以 3 的余数是 1。
2. 关系运算符
关系运算符用于比较两个数的大小,返回 true 或 false。关系运算符包括:
- 大于运算符 >:用于比较两个数值的大小,如果第一个数值大于第二个数值,则返回 true。例如,5 > 3 的结果是 true。
- 小于运算符 <:用于比较两个数值的大小,如果第一个数值小于第二个数值,则返回 true。例如,3 < 5 的结果是 true。
- 大于等于运算符 >=:用于比较两个数值的大小,如果第一个数值大于或等于第二个数值,则返回 true。例如,5 >= 3 的结果是 true。
- 小于等于运算符 <=:用于比较两个数值的大小,如果第一个数值小于或等于第二个数值,则返回 true。例如,3 <= 5 的结果是 true。
- 等于运算符 ==:用于比较两个数值是否相等,如果两个数值相等,则返回 true。例如,5 == 5 的结果是 true。
- 不等于运算符 !=:用于比较两个数值是否不相等,如果两个数值不相等,则返回 true。例如,5 != 5 的结果是 false。
3. 逻辑运算符
逻辑运算符用于组合和判断布尔条件,包括且、或和非。逻辑运算符包括:
- 且运算符 &&:用于连接两个布尔表达式,如果两个表达式都为 true,则返回 true。例如,true && true 的结果是 true。
- 或运算符 ||:用于连接两个布尔表达式,如果其中一个表达式为 true,则返回 true。例如,true || false 的结果是 true。
- 非运算符 !:用于反转布尔值,如果布尔值为 true,则返回 false;如果布尔值为 false,则返回 true。例如,!true 的结果是 false,!false 的结果是 true。
4. 赋值运算符
赋值运算符用于将值赋予变量。赋值运算符的例子包括:
- 赋值运算符 =:用于将右侧的值赋给左侧的变量。例如,x = 10 的结果是 x 变为 10。
- 加赋值运算符 +=:用于将右侧的值加到左侧变量的当前值上。例如,x += 3 的结果是 x 变为 13。
- 减赋值运算符 -=:用于将右侧的值从左侧变量的当前值中减去。例如,x -= 3 的结果是 x 变为 7。
- 乘赋值运算符 *=:用于将右侧的值乘以左侧变量的当前值。例如,x *= 3 的结果是 x 变为 30。
- 除赋值运算符 /=:用于将左侧变量的当前值除以右侧的值。例如,x /= 3 的结果是 x 变为 10。
- 取模赋值运算符 %=:用于将左侧变量的当前值除以右侧的值,并返回余数。例如,x %= 3 的结果是 x 变为 1。
5. 位运算符
位运算符用于对二进制位进行运算。位运算符包括:
- 按位与运算符 &:用于对两个数值的二进制位进行按位与运算。例如,5 & 3 的结果是 1,因为二进制表示为 101 & 001。
或运算符 |:用于对两个数值的二进制位进行按位或运算。例如,5 | 3 的结果是 7,因为二进制表示为 101 | 001。
- 按位取反运算符 ~:用于对一个数值的二进制位进行按位取反。例如,~5 的结果是 -6,因为二进制表示为 11111111 11111111 11111111 11111111 对应十进制的 -6。
- 按位异或运算符 ^:用于对两个数值的二进制位进行按位异或运算。例如,5 ^ 3 的结果是 6,因为二进制表示为 101 ^ 001。
- 左移运算符 <<:用于将一个数值的二进制位左移指定的位数。例如,5 << 2 的结果是 20,因为二进制表示为 101 左移 2 位得到 10100。
- 右移运算符 >>:用于将一个数值的二进制位右移指定的位数。例如,5 >> 2 的结果是 1,因为二进制表示为 101 右移 2 位得到 001。
6. 条件(三元)运算符
条件运算符是一个简写版的 if-else 语句,用于根据条件返回不同的值。条件运算符的语法是:
```java
condition ? expression1 : expression2
```
如果 condition 为 true,则表达式 1 的值将被返回,否则返回表达式 2 的值。例如:
```java
int result = (5 > 3) ? 5 : 3;
```
在这个例子中,如果条件 `5 > 3` 为 true,则 `result` 的值为 5,否则为 3。
7. 实例of运算符
实例of运算符用于检查一个对象是否是特定类的实例。它的语法是:
```java
instance instanceof classType
```
如果 instance 是 classType 的实例,则返回 true,否则返回 false。例如:
```java
String s = "Hello World";
if (s instanceof String) {
System.out.println("s 是 String 类型的实例");
}
```
在这个例子中,如果 `s` 是 `String` 类型的实例,则打印出相应的消息。
8. 增强for循环(for-each循环)
增强for循环是 Java 5 引入的一种简化版的 for 循环,用于遍历数组或集合。它的语法是:
```java
for (type variable : collection) {
// 循环体
}
```
例如,遍历一个整数数组:
```java
int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
System.out.println(number);
}
```
在这个例子中,循环体会遍历 `numbers` 数组中的每个元素,并执行打印操作。
9. 数组和字符串初始化
Java 提供了简化的数组和字符串初始化语法,使得初始化数组和字符串变得更加方便。例如:
```java
// 初始化数组
int[] numbers = {1, 2, 3, 4, 5};
// 初始化字符串
String s = "Hello World";
```
在这两个例子中,数组 `numbers` 和字符串 `s` 都是在声明时进行初始化的。
10. 泛型
Java 5 引入了泛型,允许在编写类、接口和方法时使用类型参数,从而创建可重用的、类型安全的代码。泛型方法允许在运行时使用具体类型来替换类型参数。例如:
```java
public class Box<T> {
private T t;
public void set(T t) {
this.t = t;
}
public T get() {
return t;
}
}
// 使用泛型
Box<Integer> integerBox = new Box<Integer>();
integerBox.set(10);
int number = integerBox.get();
```
在这个例子中,`Box` 类是一个泛型类,它有一个类型参数