首页 > Java > java教程 > 正文

使用一元运算符

Barbara Streisand
发布: 2024-11-11 09:20:02
原创
410 人浏览过

根据定义,一元运算符是只需要一个操作数或变量来
函数。它们经常执行简单的任务,例如增加
数值变量减一,或对布尔值求负。

Working with Unary Operators

逻辑补码和否定运算符
逻辑补运算符 !,翻转布尔表达式的值。例如,
如果值为 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中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板