我有以下代码:
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
。 右的
答案 0 :(得分:7)
int i =+ 2;
变量i的正2(+2)赋值。如果您的写作类似于int i = +2;
又一个例子 -
int i = 2;
i=+3;
System.out.println(i);
打印3。
+
一元加运算符;指示 正值(数字是 没有这个的积极,但是)
答案 1 :(得分:3)
说:
int i =+ 2;
+
充当unary operator。
详细说明,它将i
设置为正值2
。
编辑:您的更新说:
int i =- -2;
产生2.为什么?
在这种情况下,它意味着i=-(-(2))
。请注意,当值为Integer.MIN_VALUE
时,使用一元减号运算符可能会产生意外的结果。
答案 2 :(得分:2)
我相信你的意思是= +真的是+ =。
您的代码将+2(正2)的值分配给整数。
例如:
int x =+ 4;
x =+ 8;
Console.WriteLine(x.ToString());
Console.ReadLine();
将打印“8”而不是12.这是因为您将x指定为+4然后指定+8。
如果你问的是+ =是什么,它是获取初始变量并添加它的简写。
x += 8
与
相同x = x + 8
通过更改前面的示例form = + to + =给我们:
int x = 4;
x += 8;
Console.WriteLine(x.ToString());
Console.ReadLine();
将打印“12”。
答案 3 :(得分:1)
你设置i等于+2,这就是你得到的。你期待什么样的输出?
答案 4 :(得分:0)
有关一元操作员的信息,请参阅下图。
这是一个了解它的例子。
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
。是的,这个空间使它更具可读性。
答案 5 :(得分:0)
在回答所有其他问题时,我想提供JLS参考 回答你的编辑
int i =- -2;
如jls
中所述所以,
System.out.println(i); //prints 2
对于整数值,否定与从零减去相同。
注意强>
对于浮点值,否定与从零减法不同,因为如果x为+0.0,则0.0-x为+0.0,但-x为-0.0。
一元减号仅反转浮点数的符号。特殊情况:
如果操作数是NaN,则结果为NaN。 (回想一下,NaN没有任何迹象(§4.2.3)。)
如果操作数是无穷大,则结果是符号相反的无穷大。
如果操作数为零,则结果为符号相反的零。
有用的链接