【问题标题】:Use of =+ operator in Java? [duplicate]在 Java 中使用 =+ 运算符? [复制]
【发布时间】:2013-10-09 16:34:47
【问题描述】:

我有以下代码:

public class Operators {
    public static void main(String[] args) {
        int i =+ 2;
        System.out.println(i);
    }
}

执行后,我得到以下输出:2

那么 =+ 运算符在这里实际上做了什么?

编辑:

正如一些人的回答,它将+2 分配给i,请考虑以下代码:

public class Operators {
    public static void main(String[] args) {
        int i =- -2;
        System.out.println(i);
    }
}

所以在上述情况下,输出应该是 -2。但我收到 2

所以我想,它是-(-2),它给出了2

【问题讨论】:

  • =+ 是两个运算符= 和前缀+ 一个。
  • 如果写成i = +2可能更有意义,这与i = 2相同。但如果我说i = -2 我认为它会更有意义......
  • 你懂Javascript吗?阅读 What does = +_ mean in JavaScript =+ 在 JavaScript 中很有趣。
  • -(-2) 等价于 +2。欲了解更多信息,您可以在这里查看:en.wikipedia.org/wiki/Arithmetic
  • 结束投票...??我不明白为什么..!!

标签: java operators


【解决方案1】:
int i =+ 2;

对变量 i 进行正 2(+2) 赋值。如果你写像 -- int i = +2;

再举一个例子-

int i = 2;
i=+3;
System.out.println(i);

打印 3。

+一元加运算符;表示 正值(数字是 但是,没有这个是积极的)

更多示例 - http://docs.oracle.com/javase/tutorial/displayCode.html?code=http://docs.oracle.com/javase/tutorial/java/nutsandbolts/examples/UnaryDemo.java

【讨论】:

  • 感谢您编辑 Suresh :)
  • 是的,你是对的 Gokul
  • 反对投票的任何评论
【解决方案2】:

当说:

int i =+ 2;

+ 充当unary operator

详细地说,它将i 设置为正值2

编辑:您的更新说:

int i =- -2;

产生 2。为什么?

在这种情况下,它意味着i=-(-(2))。请注意,当值为 Integer.MIN_VALUE 时,使用一元减号运算符可能会产生意外结果。

【讨论】:

  • @Gokul 更新了帖子。
【解决方案3】:

我相信你所说的 =+ 真的是 +=。

您的代码将 +2(正 2)的值分配给整数。

例如:

int x =+ 4;
x =+ 8;
Console.WriteLine(x.ToString());
Console.ReadLine();

将打印“8”,而不是 12。这是因为您先将 x 分配给 +4,然后再分配 +8。

如果您询问 += 的作用,它是获取初始变量并将其添加到其中的简写。

x += 8

相同
x = x + 8

通过将前面的示例形式 =+ 更改为 += 给我们:

int x = 4;
x += 8;
Console.WriteLine(x.ToString());
Console.ReadLine();

将打印“12”。

【讨论】:

  • 为什么投反对票?回答原始问题,并解释什么看起来是错字。
【解决方案4】:

你设置 i 等于 +2,这就是你得到的。你期待什么样的输出?

【讨论】:

  • 为什么我的正确答案被否决了?我真的需要解释 +2 表示正 2 吗?
  • 答案需要更多细节才能正确地成为一个答案。
  • “你期待什么样的输出”简直是有毒的。
【解决方案5】:

一元运算符请参考下图。

这里有一个例子来理解它。

public class UnaryDemo {
    public static void main(String[] args) {
        int x = 10;
        int y = 20;

        int result = +x;

        System.out.println("+x = " + result);

        result = -y;

        System.out.println("-y = " + result);
        }
    }

输出是

+x = 10
-y = -20

因此,将运算符视为variable = +value 而不是variable =+ values。是的,这个空间使它更具可读性。

【讨论】:

    【解决方案6】:

    由于所有其他人都已回答,我想提供 JLS 参考。
    回答您的编辑

    int i =- -2;
    

    jls中指定

    • 对操作数执行一元数字提升 (§5.6.1)。
    • 一元减号表达式的类型是操作数的提升类型。
    • 在运行时,一元减号表达式的值是操作数提升值的算术否定。

    所以,

    System.out.println(i); //prints 2  
    

    对于整数值,取反与从零减法相同。


    注意

    对于浮点值,取反与从零减法不同,因为如果 x 为 +0.0,则 0.0-x 为 +0.0,但 -x 为 -0.0。

    一元减号只是反转浮点数的符号。特殊情况:

    • 如果操作数为 NaN,则结果为 NaN。 (回想一下,NaN 没有符号(第 4.2.3 节)。)

    • 如果操作数是无穷大,则结果是相反符号的无穷大。

    • 如果操作数为零,则结果为相反符号的零。

    有用的链接

    1. unary operators
    2. Unary Numeric Promotion

    【讨论】:

      猜你喜欢
      • 2011-03-06
      • 1970-01-01
      • 2013-11-23
      • 2015-09-26
      • 2010-11-05
      • 1970-01-01
      • 2020-12-16
      • 2013-02-20
      • 2014-06-01
      相关资源
      最近更新 更多