# 分配、算术和一元运算符

您将遇到的最常见的运算符之一是简单的赋值运算符「=」。你在自行车课上看到这个操作符,它将其右侧的值分配给左侧的操作数:

int cadence = 0;
int speed = 0;
int gear = 1;
1
2
3

此操作符也可用于对象分配对象引用,如创建对象中所述。

# 算术运算符

Java 编程语言提供执行加法,减法,乘法和除法的运算符。可能看起来很新的唯一符号是「%」,它将一个操作数除以另一个,并返回剩余部分作为结果。

操作者 描述
+ 加法运算符(也用于字符串连接)
- 减法运算符
* 乘法运算符
/ 触发运算符
% 取模

以下程序, ArithmeticDemo 测试算术运算符。

class ArithmeticDemo {

    public static void main (String[] args) {

        int result = 1 + 2;
        // result is now 3
        System.out.println("1 + 2 = " + result);
        int original_result = result;

        result = result - 1;
        // result is now 2
        System.out.println(original_result + " - 1 = " + result);
        original_result = result;

        result = result * 2;
        // result is now 4
        System.out.println(original_result + " * 2 = " + result);
        original_result = result;

        result = result / 2;
        // result is now 2
        System.out.println(original_result + " / 2 = " + result);
        original_result = result;

        result = result + 8;
        // result is now 10
        System.out.println(original_result + " + 8 = " + result);
        original_result = result;

        result = result % 7;
        // result is now 3
        System.out.println(original_result + " % 7 = " + result);
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

这个程序打印以下内容

1 + 2 = 3
3 - 1 = 2
2 * 2 = 4
4 / 2 = 2
2 + 8 = 10
10 % 7 = 3
1
2
3
4
5
6

您还可以将算术运算符与简单赋值运算符组合以创建复合赋值。例如,x+=1;并且x=x+1;都将值增加 1。

「+」操作者也可以用于级联(接合)两个字符串在一起,如示于下述 ConcatDemo 方案:

class ConcatDemo {
    public static void main(String[] args){
        String firstString = "This is";
        String secondString = " a concatenated string.";
        String thirdString = firstString+secondString;
        System.out.println(thirdString);
    }
}
1
2
3
4
5
6
7
8

在该程序结束时,变量 「thirdString」 包含 「This is a concatenated string.」,它被打印到标准输出。

# 一元运算符

一元运算符只需要一个操作数; 它们执行各种操作,例如将值递增/递减 1,否定表达式或反转布尔值。

操作者 描述
+ 一元加运算符; 表示正值(然而,数字为正数)
- 一元减运算符 否定一个表达
++ 增加 将值递增 1
-- 递减 将值增减 1
! 逻辑互补 反转布尔值的值

以下程序, UnaryDemo 测试一元运算符:

class UnaryDemo {

    public static void main(String[] args) {

        int result = +1;
        // result is now 1
        System.out.println(result);

        result--;
        // result is now 0
        System.out.println(result);

        result++;
        // result is now 1
        System.out.println(result);

        result = -result;
        // result is now -1
        System.out.println(result);

        boolean success = false;
        // false
        System.out.println(success);
        // true
        System.out.println(!success);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

递增/递减运算符可以应用在操作数之前(前缀)或之后(后缀)。代码 result++;和 ++result;将在 result 两端被加一。 唯一的区别是前缀

  • version(++result)计算为递增值,
  • 而后缀 version(result++)计算为原始值。

以下程序 PrePostDemo 说明前缀/后缀一元增量运算符:










 
 
 
 





public class PrePostDemo {
    public static void main(String[] args) {
        int i = 3;
        i++;
        // prints 4
        System.out.println(i);
        ++i;
        // prints 5
        System.out.println(i);
        // prints 6
        System.out.println(++i);
        // prints 6
        System.out.println(i++);
        // prints 7
        System.out.println(i);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17