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