该Java教程是针对JDK 8编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
有关Java SE 9及后续版本中更新的语言特性的摘要,请参阅Java语言更改。
有关所有JDK版本的新功能、增强功能以及已删除或已弃用选项的信息,请参阅JDK发布说明。
你将会遇到的最常见的运算符之一是简单赋值运算符 "="。你在 Bicycle 类中看到了这个运算符;它将右边的值赋给左边的操作数:
int cadence = 0; int speed = 0; int gear = 1;
这个运算符也可以用于对象,用来赋值对象引用,在 创建对象 中有讨论。
Java 编程语言提供了执行加法、减法、乘法和除法的运算符。你很有可能通过它们在基本数学中的对应物来认识它们。唯一一个可能对你来说看起来新的符号是 "%",它将一个操作数除以另一个操作数,并返回余数作为结果。
| 运算符 | 描述 |
|---|---|
+ |
加法运算符(也用于字符串连接) |
- |
减法运算符 |
* |
乘法运算符 |
/ |
除法运算符 |
% |
取余运算符 |
以下程序,ArithmeticDemo,测试了算术运算符。
class ArithmeticDemo {
public static void main (String[] args) {
int result = 1 + 2;
// 现在 result 是 3
System.out.println("1 + 2 = " + result);
int original_result = result;
result = result - 1;
// 现在 result 是 2
System.out.println(original_result + " - 1 = " + result);
original_result = result;
result = result * 2;
// 现在 result 是 4
System.out.println(original_result + " * 2 = " + result);
original_result = result;
result = result / 2;
// 现在 result 是 2
System.out.println(original_result + " / 2 = " + result);
original_result = result;
result = result + 8;
// 现在 result 是 10
System.out.println(original_result + " + 8 = " + result);
original_result = result;
result = result % 7;
// 现在 result 是 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程序:
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 |
! |
逻辑非运算符;取反布尔值 |
下面的程序UnaryDemo测试了一元运算符:
class UnaryDemo {
public static void main(String[] args) {
int result = +1;
// result现在为1
System.out.println(result);
result--;
// result现在为0
System.out.println(result);
result++;
// result现在为1
System.out.println(result);
result = -result;
// result现在为-1
System.out.println(result);
boolean success = false;
// false
System.out.println(success);
// true
System.out.println(!success);
}
}
自增/自减运算符可以在操作数之前(前缀)或之后(后缀)应用。代码result++;和++result;都会使result增加一。唯一的区别是前缀版本(++result)的值是增加后的值,而后缀版本(result++)的值是原始值。如果只是进行简单的自增/自减操作,那么选择哪个版本并不重要。但如果在较大的表达式中使用此运算符,你所选择的版本可能会有显著的差异。
下面的程序,PrePostDemo,演示了前缀/后缀一元递增运算符:
class PrePostDemo {
public static void main(String[] args){
int i = 3;
i++;
// 输出4
System.out.println(i);
++i;
// 输出5
System.out.println(i);
// 输出6
System.out.println(++i);
// 输出6
System.out.println(i++);
// 输出7
System.out.println(i);
}
}