java - 为什么一元运算符不能直接对 Java 中的值进行操作?

标签 java unary-operator

不是我想要,但我想知道为什么一元运算符不直接作用于 Java 中的值?

为什么 result++;int result = 0; 时有效,但 result = 0++; 无效?

我在docs中只能找到一元运算符只需要一个operand,但是没有明确定义操作数,貌似可以可以是变量或值。

最佳答案

并不是说一元运算符不起作用 - 例如 -(+(-5)) 就可以。

但是 ++ 不只是计算一个值——它的目的是增加一个变量。 0 不是变量。

来自 JLS 15.14.2 (后缀递增运算符++)

The result of the postfix expression must be a variable of a type that is convertible (§5.1.8) to a numeric type, or a compile-time error occurs.

请注意,这也不仅仅是文字。你不能这样做:

String x = "foo";
x.length()++; // wrong!

因为 x.length() 没有被归类为变量。

但是您可以使用其他一元运算符,例如

String x = "foo";
int y = -x.length(); // Unary - operator... that's fine

关于java - 为什么一元运算符不能直接对 Java 中的值进行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32931558/

相关文章:

c++ - 禁用类指针递增/递减运算符

Java 表达式解析器和计算器调车场算法

java - 如何在部署时启动 EJB 计时器?

java - 如何将PEM公钥转换为DER公钥?

java - 需要帮助修改正则表达式

c++ - 针对文字字符串的一元加号 (+)

javascript - 一元运算符 "++"和 "--"奇怪的情况

c - 一元 + 运算符是否进行类型转换?

java - 如何扩展 Lucene 的 StandardAnalyzer 以进行自定义特殊字符处理?

java - 语音识别在android中超时太快