java - Java的一元加号运算符的目的是什么?

标签 java language-history unary-operator

Java 的一元加号运算符似乎是通过 C++ 从 C 中继承而来的。

int result = +1;   

它似乎有以下效果:

  • 如果是包装对象,则将其操作数拆箱
  • 将其操作数提升为 int,如果它还不是 int 或更宽
  • 对包含大量连续加号的恶意表达式的解析略微复杂

在我看来,有更好/更清晰的方法来做所有这些事情。

this SO question ,关于 C# 中的对应运算符,有人说“如果你觉得需要,它就会被重载”。

然而,在 Java 中,不能重载 any 运算符。那么这个一元加号运算符是否存在于 Java 中只是因为它存在于 C++ 中?

最佳答案

一元加号运算符在其操作数的类型为bytecharshort时自动转换为int 。这称为一元数字提升,它使您能够执行以下操作:

char c = 'c';
int i = +c;

当然,它的用途有限。但它确实有一个目的。请参阅规范,特别是 §15.15.3 部分 §5.6.1

关于java - Java的一元加号运算符的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2624410/

相关文章:

java - Eclipse 中不同的断点图标意味着什么?

java - 检查和计算文件中的标点符号

javascript - 为什么 javascript 程序以纯文本形式交付?

c - 为什么 C 编译器在外部名称前加上下划线?

c++ - 我怎样才能模仿一元 + 运算符正在做什么来让代码在 gcc-4.6 中正确编译?

c - 在这种情况下,C 是否正确处理了 sizeof(...) 和 sizeof ...?

javascript - 为什么这个一元函数在另一个 javascript 函数中?

java - 使用 GwtQuery 隐藏 div

java程序线程中的无限循环导致百分之百的cpu