文档

Java™ 教程-Java Tutorials 中文版
赋值,算术和一元运算符
Trail: Learning the Java Language
Lesson: Language Basics
Section: Operators

赋值,算术和一元运算符

简单赋值运算符

你将遇到的最常见的运算符之一是简单赋值运算符 "="。你在 Bicycle 类中看到了这个运算符;它将右边的值赋给左边的操作数:

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

Creating Objects 中所述,此运算符也可用于对象以分配 object references (对象引用)

算术运算符

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

你还可以将算术运算符与简单赋值运算符组合以创建 compound assignments (复合赋值)。例如,x+=1;x=x+1; 都会将 x 的值递增 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);
    }
}

在该程序结束时,变量 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);
    }
}

递增/递减运算符可以在操作数之前(前缀)或之后(后缀)应用。代码 result++;++result; 结束时 result 都将加 1。唯一的区别是前缀版本(++result)计算为递增值,而后缀版本(result++)计算为原始值。如果你只是执行简单的递增/递减操作,则选择哪个版本无关紧要。但是如果你在更大的表达式中使用这个运算符,那么你选择的运算符可能会有很大的不同。

以下程序 PrePostDemo 演示了前缀/后缀一元递增运算符:


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

Previous page: Operators
Next page: Equality, Relational, and Conditional Operators