En nuestro código java que he encountred una línea que yo entiendo por qué nose
Total = + - valFromsp; o Total = - + valFromsp; así que escribí programa pequeño y unido aquí.
public class Test {
public static void main (String... arg) {
int total = 20;
int valFromsp = 60 ;
total = + - valFromsp;
System.out.println(total); // prints -60
}
}
Sólo significa esto:
total = -valFromsp;
La línea de código es una sentencia de asignación con el ser expresión del lado derecho + - valFromsp
. Lo que hace + - valFromsp
media? Si añadimos los soportes, se hace +(-(valFromsp))
.
El operador unitario -
opera en el operando valFromsp
por lo que es -60
. Y a continuación, el +
operador unitario opera en -60
no hacer nada a ella.
Los +
y -
unarios operadores están especificados en §15.15 de la especificación del lenguaje Java:
Los operadores +, -, ++, -, ~, y el operador de conversión (§15.16) se llaman los operadores unitarios.
UnaryExpression: PreIncrementExpression PreDecrementExpression + UnaryExpression - UnaryExpression UnaryExpressionNotPlusMinus
El uso del +
operador unario se especifica más en §15.15.3 :
Promoción numérica unario ( §5.6.1 ) se realiza en el operando. El tipo de la expresión más unario es el tipo promovido del operando. El resultado de la expresión más unario no es una variable, pero un valor, incluso si el resultado de la expresión operando es una variable.
Sin embargo, dado que está utilizando int
s, lo que no se someten promoción numérica unario, +
no hace nada. Incluso si está utilizando byte
, short
o char
, el +
todavía no hará nada, porque el -
operador unitario también hace promoción. Así que en realidad no hay ninguna razón para utilizar tanto +
y -
al mismo tiempo.
Le sugiero que acaba de cambiar a:
total = -valFromsp;
para evitar la confusión en el futuro.