【问题标题】:Why can't Unary Operators operate directly on values in Java?为什么一元运算符不能直接对 Java 中的值进行操作?
【发布时间】:2015-10-04 08:31:53
【问题描述】:

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

为什么result++; 可以在int result = 0; 工作但result = 0++; 不工作?

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

【问题讨论】:

    标签: java unary-operator


    【解决方案1】:

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

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

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

    后缀表达式的结果必须是可转换(第 5.1.8 节)为数值类型的类型的变量,否则会发生编译时错误。

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

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

    再次因为 x.length() 不属于变量。

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

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

    【讨论】:

      猜你喜欢
      • 2016-08-02
      • 1970-01-01
      • 2010-11-22
      • 2015-10-07
      • 1970-01-01
      • 2013-07-30
      • 1970-01-01
      • 2021-02-28
      • 2011-12-23
      相关资源
      最近更新 更多