Unary Operators in Java

2025年7月21日 | 阅读 6 分钟

在 Java 中,一元运算符是只能与一个操作数一起使用的运算符。它用于表示正值或负值,将值增加/减少 1,以及对布尔值进行取反。

Unary Operators in Java

一元运算符的类型

Java 中有五种一元运算符

  • 一元加
  • 一元减
  • 自增运算符
  • 自减运算符
  • 逻辑非运算符

下表描述了一元运算符的简要说明。

运算符名称符号描述示例等效表达式
一元加+用于表示值。+aa
一元减-用于表示值。-a-
自增运算符++它将变量的值增加 1++a

a++
a=a+1
自减运算符--它将变量的值减少 1--a

a--
a=a-1
逻辑非运算符!反转布尔变量的值。!true-

一元加

它用于表示正值。通常,我们不会在操作数前写运算符。因此,它是可选的。

语法

示例: x=+99 或 x=99;

一元减

它用于将正值转换为负值。

语法

考虑以下程序:

示例

编译并运行

输出

20
-20

自增运算符

它用于将操作数的值加一。该运算符由一对加号(++)表示。该运算符可以应用于操作数之前或之后。

前缀自增运算符:如果在操作数之前(前缀)写了自增运算符,则称为前缀自增。在这种情况下,值首先增加一,然后用于计算。

语法

示例: 假设 x=9,则 ++x 的值将是 10。

后缀自增运算符:如果在操作数之后(后缀)写了自增运算符,则称为后缀自增。在这种情况下,值首先被处理,然后增加。这意味着变量持有的值首先用于计算,然后增加 1。

语法

示例: 假设 x=11,则 x++ 的值将是 12。

让我们在 Java 程序中使用前缀自增和后缀自增运算符。

示例

编译并运行

输出

11
12
13
13
14

i++ 和 i+=1 有什么区别?

表达式 i++i+=1 的计算结果相同。但唯一的区别是 i++ 使用自增运算符(一元运算符),而 i+=1 使用赋值运算符

另一个区别是,表达式 i++ 直接增加 i 的值,而表达式 i+=1 会先被JVM 转换为 i=i+1,然后再执行。

自减运算符

它用于将操作数的值减一。该运算符由一对减号(--)表示。该运算符可以应用于操作数之前或之后。

前缀自减运算符:如果在操作数之前(前缀)写了自减运算符,则称为前缀自减。在这种情况下,值首先减少一,然后用于计算。

语法

示例: 假设 x=9,则 --x 的值将是 8。

后缀自减运算符:如果在操作数之后(后缀)写了自减运算符,则称为后缀自减。在这种情况下,值首先被使用,然后减少 1。

语法

示例: 假设 x=11,则 x-- 的值将是 10。

让我们在 Java 程序中使用前缀自减和后缀自减运算符。

示例

编译并运行

输出

19
18
17
17
16

请记住

  • 不允许嵌套使用自增或自减运算符。例如
  • 永远不要将一元运算符与final关键字一起使用
  • 表达式 ++x 和 x++ 与 x=x+1 相同,而表达式 --x 和 x-- 与 x=x-1 相同。

逻辑非运算符

它用于反转操作数的值。这意味着如果操作数为 true,则运算符的补码为 false,反之亦然。感叹号(!)表示它。

语法

示例: flag=!true;

让我们在 Java 程序中使用逻辑非运算符。

示例

编译并运行

输出

false
true

一元运算符的优点

简洁易用:这些运算符易于使用,只需一个操作数。它们使代码更简洁易读。

比其他运算符更快:一元运算符通常比其他运算符更快。这是因为它们只需要一个操作数。

前缀和后缀自增/自减:一元运算符同时具有前缀和后缀自减以及自增选项,这在各种用例中都非常有用。例如,前缀自减运算符可用于在使用变量之前减少其值,而后缀自减运算符可用于在使用变量的表达式后减少其值。前缀和后缀自增运算符也存在类似的情况。

修改基本类型:这些运算符可以更改 int、float、long、double 等基本类型的值。

一元运算符的缺点

降低可读性:在复杂的表达式中,链式或嵌套一元运算符的使用会使代码难以维护和理解。

潜在错误:像 -- 和 ++ 这样的运算符,如果使用不当,可能会导致变量的意外修改,从而产生不可预测的结果。

结论

一元运算符作用于单个操作数。它们是计算机编程中的工具,用于简化诸如递减、递增、取负和位操作等任务。它们可以提高代码的简洁性和可读性,特别是在条件语句和循环中。理解它们的行为对于编写有效和高效的代码至关重要。

Java 一元运算符选择题

1. ++ 运算符的用途是什么?

  1. 将操作数的值增加 1
  2. 将操作数的值增加 2
  3. 将操作数的值增加 3
  4. 将操作数的值增加 4
 

答案:a)

解释: ++ 运算符将操作数的值增加 1。


2. 以下代码片段的输出是什么?

  1. 6
  2. 7
  3. 5
  4. 4
 

答案:c)

解释: 上面的代码片段使用后缀自增运算符将 x 的值增加了 1。因此,首先,x 的值(即 5)被赋给 y,然后 x 的值增加 1。


3. 逻辑非运算符的用途是什么?

  1. 它用于反转操作数的布尔值。
  2. 它用于翻转操作数的位。
  3. a 和 b 都是
 

答案:a)

解释: 逻辑非运算符用于反转操作数的布尔值,即 false 值被转换为 true 值,true 值被转换为 false 值。


4. 以下代码片段的输出是什么?

  1. 6
  2. 4
  3. 5
  4. Error
 

答案:d)

解释: 上面的代码片段使用了不允许的自增和自减运算符的嵌套。


5. 以下哪个运算符可以反转布尔值?

  1. -
  2. --
  3. !
  4. 以上都不是
 

答案:c)

解释: !运算符用于反转操作数的值。这意味着如果操作数为 true,则运算符的补码为 false,反之亦然。


下一主题Java-cors-error