Java的一元加运算似乎从C到已经过来了,通过C ++。
int result = +1;
它似乎有以下影响:
- Unboxes它的操作数,如果它是一个包装对象
- 促进其操作来
int
,如果它不是已经是一个int
或更宽 - 复杂包含大量的连续的加号的邪恶表情略微解析
在我看来,有更好/更清晰的方式做所有这些事情。
在这太问题 ,关于C#中的对应操作,有人说,“它的存在超载,如果你觉得有必要。”
然而,在Java中,一个不能重载任何操作。 那么,这是否一元加运算符存在于Java的不仅是因为它在C ++中存在?
一元加号运算符执行一个自动转换到int
时它的操作数的类型是byte
, char
,或short
。 这就是所谓的一元数值升级 ,它使您能够做这样的事情如下:
char c = 'c';
int i = +c;
当然,它的用途有限。 但它确实有一个目的。 见本说明书中,特别是部分§15.15.3和§5.6.1 。
我不知道,但我怀疑它的存在对与(显然需要)元减运算符对称。
这里是什么样的一元加会做一个字符变量简短演示:
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);
}
运行这个程序的输出是:
char: X
int: 88
它是如何工作:一元+或 - 拆箱他们的操作数,如果它是一个包装对象,然后促进其操作数为int,如果没有一个int或更宽。 所以,我们可以看到,虽然在第一次调用method
会选择char
超载(仅拆箱),第二个电话会选择int
的版本method
。 可变ch
类型的Character
将被传递到method
作为int
参数,因为所施加的一元加号的。
我的猜测是它的存在,因为有时打字加了使事情变得更清晰。 你可能想强调的是,有些数字是积极的,而不是一些负数。
另外,提供使用它的一个现实世界的例子,正温度往往在世界的一些地方加始终前缀。
一个Java的设计目标是要熟悉(一个C / C ++开发者),所以当它来到运营商这样我敢肯定,他们就必须有一个强有力的理由将它排除在外,没有一个很好的理由需要它。
许多其他语言有一元加。 这是习惯,包括它,小气的将它排除在外。 这只是一对夫妇在编译行。
一元经营者对Java以下内容:
- “+”一元加运算; 表示正的值(数字是没有这个正,但是)
- “ - ”元减运算符; 否定的表达
- ++递增运算符; 递增1的值
- - 递减操作; 通过减1的值! 逻辑补算子; 反转的布尔值
来源: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/opsummary.html