我在查看同事的代码时遇到了这个问题。她无意中把它留了下来(它曾经是一个字符串连接),我以为它不会编译。原来我错了,所以我尝试看看那个操作员做了什么:
public static void main(String[] args) {
int i = -1;
System.out.println(String.format("%s", +i));
System.out.println(String.format("%s", +i));
}
据我所知,它什么也没做,但是我很好奇是否有允许它编译的原因。该操作员有一些隐藏的功能吗?类似于++i
,但是您会认为编译器会否+i
。
那是加一元运算符+
。它basicaly它确实数值提升,所以“如果操作数是编译时类型的byte
,short
或者char
,它被提升为类型的值int
”。
另一个一元运算符是增量运算符++
,它可以将值加1。可以在操作数(前缀运算符)之前或之后(后缀运算符)之后应用增量运算符。不同之处在于,前缀运算符(++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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句