Las operaciones en Java se realizan en el mismo orden como se operan en las matemáticas normales, solo habría que aclarar que no están incorporadas las operaciones con exponentes y radicales (estas operaciones se realizan utilizando métodos, generalmente en la clase Math, y por el uso de paréntesis se operan con la misma prioridad). Adicionalmente, las operaciones con la misma prioridad se realizan de izquierda a derecha y agrupándolas de dos en dos operandos.
Unarios | - | Negativo | |
++ | Incremento prefijo | ||
-- | Decremento prefijo | ||
Paréntesis | ( ) | Permite agrupar | |
Llamada a método que regresa un valor (función) | |||
Multiplicación y división | * | Multiplicación | |
/ | División | ||
% | Módulo o residuo | ||
Suma y resta | + | Suma | |
- | Resta | ||
Incremento / decremento posfijo | ++ | Incremento posfijo | |
-- | Decremento posfijo | ||
Operadores de bits (sólo enteros) | & | and | |
| | or | ||
^ | xor | ||
~ | not | ||
>> | Corrimiento a la derecha | ||
<<< /td> | Corrimiento a la izquierda | ||
Asignación | += | -= | Acumuladores asigna realiza la operación indicada sobre sí mismo |
*= | /= | ||
%= | &= | ||
|= | ^= | ||
= | Asignación (←) |
Te recomendamos ver el objeto Prioridad de los operadores aritméticos.
Asignación
En algoritmos y psudocódigos se utiliza el símbolo ← para indicar la asignación, es decir, se calcula el valor de la expresión que se encuentra a la derecha del símbolo y se asigna a la variable del lado izquierdo. En Java, el operador de asignación es el igual =.
Del lado izquierdo se tiene un valor y del lado derecho una expresión; que puede ser una constante, una variable una referencia a un objeto o una operación que regrese un resultado.
Al final, las tres variables tendrán el valor de cero.
Acumuladores
En ciertas operaciones, cuando se realiza una operación donde la variable del lado izquierdo se incluye del lado derecho es posible utilizar un operador de «acumulación»:
Ejemplos:
• x = x + 3; // recupera el valor de x súmale 3 y asígnalo a x
es equivalente a:
x += 3; // a x agrégale 3
• saldo = saldo - 49; // recupera el valor de saldo réstale 49 y asígnalo a // saldo
es equivalente a:
saldo -= 49; // a saldo réstale 49
• texto = "el vendedor del mes fue: ";
texto += "Juan"; // a texto se le concatena "Juan" y se le asigna a // texto
Contadores
Cuando el proceso de acumulación es de agregar o restar 1, se utiliza el operador de incremento (++) o decremento (--). Observa estas equivalencias:
Asignación | Acumulación | Incremento |
---|---|---|
i = i + 1; | i += 1; | i++; |
Parece una trivialidad, pero en términos de programación es más eficiente el incremento (o decremento). Observa como se leen los ejemplos anteriores:
- Asignación: recupera el valor de i y súmale 1, después asígnale 1.
- Acumulación: ubica el valor de i y agrégale 1 unidad.
- Incremento: incrementa (en uno) el valor de i.
Asignación | Acumulación | Incremento |
---|---|---|
i = i - 1; | i -= 1; | i--; |
Los operadores de incremento/decremento son prefijos y posfijos y pueden colocarse en medio de expresiones complejas. Observa la tabla de prioridades y verás que cuando lo colocas prefijo se opera como mayor prioridad que cuando lo haces de manera posfija. Se recomienda su uso de forma individual y no en expresiones complejas, como se vió en los ejemplos anteriores.
Autoconversión de tipos
- Enteros se convierten de manera automática a los tipos que tienen más bits para
representarlos, pero no viceversa:
byte → short → int → double - Los enteros se convierten a punto decimal, pero no viceversa:
enteros → float → double - Cualquier tipo de dato se puede concatenar (agregar a una cadena de caracteres) y se realiza una conversión automática a String.