根据定义,一元运算符是只需要一个操作数或变量来
函数。它们经常执行简单的任务,例如增加
数值变量减一,或对布尔值求负。
逻辑补码和否定运算符
逻辑补运算符 !,翻转布尔表达式的值。例如,
如果值为 true,则将其转换为 false,反之亦然。为了说明这一点,请比较
以下语句的输出:
boolean x = false; System.out.println(x); // false x = !x; System.out.println(x); // true
同样,否定运算符,-,反转数值表达式的符号,如图
在这些声明中:
double x = 1.21; System.out.println(x); // 1.21 x = -x; System.out.println(x); // -1.21 x = -x; System.out.println(x); // 1.21
根据描述,很明显某些运算符需要变量
或他们正在采取行动的特定类型的表达。例如,您不能申请
否定运算符 - 应用于布尔表达式,也不能应用逻辑补
运算符 ! 到数值表达式。警惕考试中试图这样做的问题,
因为它们会导致代码无法编译。例如,以下代码行都没有
将编译:
int x = !5; // DOES NOT COMPILE boolean y = -true; // DOES NOT COMPILE boolean z = !0; // DOES NOT COMPILE
第一个语句不会编译,因为在 Java 中你无法执行
数值的逻辑反转。第二条语句无法编译,因为您
无法对布尔值进行数值求反;您需要使用逻辑逆运算符。
最后,最后一条语句无法编译,因为您无法获取数值的逻辑补码,也无法将整数分配给布尔变量。
在 Java 1 中和 true 在
中没有关系 无论如何,就像 0 和 false 没有关系一样。自增和自减运算符
递增和递减运算符以及 -- 分别可以应用于数字
与二元运算符相比,操作数 和 具有更高的顺序或优先级。在
换句话说,它们通常首先应用于表达式。
自增和自减运算符需要特别小心,因为它们的顺序
应用于相关操作数可以改变表达式的处理方式。如果运算符放在操作数之前,称为预自增运算符和预自减运算符,则首先应用运算符并返回值
是表达式的新值。或者,如果运算符位于操作数之后,
称为后置自增运算符和后置自减运算符,则返回表达式的原始值,返回值后应用运算符
这是示例图:
boolean x = false; System.out.println(x); // false x = !x; System.out.println(x); // true
第一个预自增运算符更新计数器的值并输出新的
值为 1。下一个后递减运算符也会更新 counter 的值,但输出
递减发生之前的值。
认证考试中的一种常见做法(尽管在现实世界中不太常见)是
将多个递增或递减运算符应用于同一行上的单个变量:
double x = 1.21; System.out.println(x); // 1.21 x = -x; System.out.println(x); // -1.21 x = -x; System.out.println(x); // 1.21
这个比上一个例子更复杂,因为 x 被修改了三个
多次在同一条线上。每次修改时,随着表达式从左向右移动,
x 的值发生变化,为变量分配了不同的值。正如你所记得的
从我们对运算符优先级的讨论来看,运算顺序在
中起着重要作用
评估这个例子。
那么如何阅读这段代码呢?首先,x 递增并返回表达式,
乘以 5。我们可以简化它:
int x = !5; // DOES NOT COMPILE boolean y = -true; // DOES NOT COMPILE boolean z = !0; // DOES NOT COMPILE
接下来,x 递减,但表达式中使用了原始值 4,导致
这个:
int counter = 0; System.out.println(counter); // Outputs 0 System.out.println(++counter); // Outputs 1 System.out.println(counter); // Outputs 1 System.out.println(counter--); // Outputs 1 System.out.println(counter); // Outputs 0
x 的最终赋值将值减少为 2,并且由于这是一个预自增运算符,因此该值将返回到表达式:
int x = 3; int y = ++x * 5 / x-- + --x; System.out.println("x is " + x); System.out.println("y is " + y);
最后,我们从左到右计算乘法和除法,并以加法结束。然后打印结果:
int y = 4 * 5 / x-- + --x; // x assigned value of 4
总而言之,一元运算符通过启用快速的单操作数操作(例如递增、求反或反转值)来简化和简化代码。它们对于高效的逻辑、紧凑的表达式和对数据的简洁控制、增强编程的可读性和功能性至关重要。
以上是使用一元运算符的详细内容。更多信息请关注PHP中文网其他相关文章!