# 赋值，算术和一元运算符

> 原文： [https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html)

## 简单分配运算符

您将遇到的最常见的运算符之一是简单赋值运算符“`=`”。你在 Bicycle 类中看到过这个操作符;它将右侧的值赋给左侧的操作数：

```
 int cadence = 0;
 int speed = 0;
 int gear = 1;

```

如[创建对象](../javaOO/objectcreation.html)中所述，此运算符也可用于对象以分配 _ 对象引用 _。

## 算术运算符

Java 编程语言提供执行加法，减法，乘法和除法的运算符。你很可能会在基础数学方面认识他们。唯一可能对你来说很新的符号是“`%`”，它将一个操作数除以另一个操作数，并将余数作为结果返回。

| 操作者 | 描述 |
| --- | --- |
| `+` | 附加运算符（也用于字符串连接） |
| `-` | 减法运算符 |
| `*` | 乘法运算符 |
| `/` | 分部运算符 |
| `%` | 剩余运算符 |

以下程序 [`ArithmeticDemo`](examples/ArithmeticDemo.java) 测试算术运算符。

```
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
3 - 1 = 2
2 * 2 = 4
4 / 2 = 2
2 + 8 = 10
10 % 7 = 3

```

您还可以将算术运算符与简单赋值运算符组合以创建 _ 复合赋值 _。例如，`x+=1;`和`x=x+1;`都将`x`的值递增 1。

`+`运算符也可用于将两个字符串连接（连接）在一起，如下面的 [`ConcatDemo`](examples/ConcatDemo.java) 程序所示：

```
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);
    }
}

```

在该程序结束时，变量`thirdString`包含“This is a concatenated string。”，它被打印到标准输出。

## 一元运算符

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

| 操作者 | 描述 |
| --- | --- |
| `+` | 一元加运算符;表示正值（但是没有这个数字是正数） |
| `-` | 一元减运算符;否定表达 |
| `++` | 增量运算符;将值递增 1 |
| `--` | 递减运算符;将值减 1 |
| `!` | 逻辑补码运算符;反转布尔值 |

以下程序 [`UnaryDemo`](examples/UnaryDemo.java) 测试一元运算符：

```
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);
    }
}

```

可以在操作数之前（前缀）或之后（后缀）应用递增/递减运算符。代码`result++;`和`++result;`都将以`result`加 1 结束。唯一的区别是前缀版本（`++result`）评估为增量值，而后缀版本（`result++`）评估为原始值。如果您只是执行简单的增量/减量，那么选择哪个版本并不重要。但是，如果您在较大的表达式中使用此运算符，则您选择的运算符可能会产生显着差异。

以下程序 [`PrePostDemo`](examples/PrePostDemo.java) 说明了前缀/后缀一元递增运算符：

```
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);
    }
}

```