Syn*_*tic 36 java unary-operator language-history
Java的一元加运算符似乎来自C,通过C++.
int result = +1;
Run Code Online (Sandbox Code Playgroud)
它似乎有以下影响:
int如果它不是已经int或更宽,则提升其操作数在我看来,有更好/更清晰的方法来做所有这些事情.
在这个SO问题中,关于C#中的对应运算符,有人说"如果你觉得有必要,它就会超载".
但是,在Java中,不能超载任何运算符.那么这个一元加运算符是否只存在于Java中,因为它存在于C++中?
Joh*_*lla 41
一元加号运算符执行一个自动转换到int时它的操作数的类型是byte,char,或short.这称为一元数字促销,它使您可以执行以下操作:
char c = 'c';
int i = +c;
Run Code Online (Sandbox Code Playgroud)
当然,它的用途有限.但它确实有目的.请参阅规范,特别是第15.15.3节和第5.5.1 节.
以下是一元加号对Character变量的简短演示:
private static void method(int i){
System.out.println("int: " + i);
}
private static void method(char c){
System.out.println("char: " + c);
}
public static void main(String[] args) {
Character ch = 'X';
method(ch);
method(+ch);
}
Run Code Online (Sandbox Code Playgroud)
运行该程序的输出是:
char: X
int: 88
Run Code Online (Sandbox Code Playgroud)
它是如何工作的:一元+或 - 取消它们的操作数,如果它是一个包装器对象,那么将它们的操作数提升为int,如果不是int或更宽的话.所以,正如我们所看到的,虽然第一次调用method将选择char重载(仅取消装箱),第二次调用将选择int版本method.由于应用了一元加号,因此变量ch类型Character将method作为int参数传递.
| 归档时间: |
|
| 查看次数: |
7020 次 |
| 最近记录: |