参见英文答案 >
What is the purpose of Java’s unary plus operator? 7个
我在审查同事的代码时遇到了这个问题.她意外地把它留了(它曾经是一个字符串连接),我以为它不会编译.事实证明我错了,所以我试着看看那个操作符做了什么:
public static void main(String[] args) {
int i = -1;
System.out.println(String.format("%s", +i));
System.out.println(String.format("%s", +i));
}
据我所知,它什么也没做,但我很好奇是否有允许编译的原因.这个操作符有一些隐藏的功能吗?它与i类似,但你认为编译器会对我进行barf.
最佳答案 那就是
plus unary operator +
.它基本上就是
numeric promotion,所以“如果操作数是编译时类型的byte,short或char,则它被提升为int类型的值”.
另一个一元运算符是递增运算符,它将值递增1.递增运算符可以在操作数之前(prefix operator)或之后(postfix operator)应用.不同之处在于前缀运算符(i)求值为递增值,而后缀运算符(i)求值为原始值.
int i = -1;
System.out.println(+i); // prints -1
System.out.println(i++); // prints -1, then i is incremented to 0
System.out.println(++i); // i is incremented to 1, prints 1