Los operadores realizan algunas funciones en uno o dos operandos. Los operadores que requieren un operador se llaman operadores unarios. Por ejemplo, ++ es un operador unario que incrementa el valor su operando en uno.
Los operadores que requieren dos operandos se llaman operadores binarios. El operador = es un operador binario que asigna un valor del operando derecho al operando izquierdo.
Los operadores unarios en Java pueden utilizar la notaci�n de prefijo o de sufijo. La notaci�n de prefijo significa que el operador aparece antes de su operando.
operador operando
La notaci�n de sufijo significa que el operador aparece despu�s de su operando:
operando operador
Todos los operadores binarios de Java tienen la misma notaci�n, es decir aparencen entre los dos operandos:
op1 operator op2
Adem�s de realizar una operaci�n tambi�n devuelve un valor. El valor y su tipo dependen del tipo del operador y del tipo de sus operandos. Por ejemplo, los operadores aritm�ticos (realizan las operaciones de aritm�tica b�sica como la suma o la resta) devuelven n�meros, el resultado t�pico de las operaciones aritm�tcias. El tipo de datos devuelto por los operadores aritm�ticos depende del tipo de sus operandos: si sumas dos enteros, obtendr�s un entero. Se dice que una operaci�n eval�a su resultado.
Es muy �til dividir los operadores Java en las siguientes categor�as: aritm�ticos, relacionales y condicionales. l�gicos y de desplazamiento y de asignaci�n.
�Operadores Aritm�ticos
El lenguaje Java soporta varios operadores arit�ticos - incluyendo + (suma), - (resta), * (multiplicaci�n), / (divisi�n), y % (m�dulo)-- en todos los n�meros enteros y de coma flotante. Por ejemplo, puedes utilizar este c�digo Java para sumar dos n�meros:
sumaEsto + aEsto
O este c�digo para calcular el resto de una divisi�n:
divideEsto % porEsto
Esta tabla sumariza todas las operaciones aritm�ticas binarias en Java.
Operador | Uso | Descripci�n |
+ | op1 + op2 | Suma op1 y op2 |
- | op1 - op2 | Resta op2 de op1 |
* | op1 * op2 | Multiplica op1 y op2 |
/ | op1 / op2 | Divide op1 por op2 |
% | op1 % op2 | Obtiene el resto de dividir op1 por op2 |
Nota: El lenguaje Java extiende la definici�n del operador + para incluir la concatenaci�n de cadenas.
Los operadores + y - tienen versiones unarias que seleccionan el signo del operando.
Operador | Uso | Descripci�n |
+ | + op | Indica un valor positivo |
- | - op | Niega el operando |
Adem�s, existen dos operadores de atajos aritm�ticos, ++ que incrementa en uno su operando, y -- que decrementa en uno el valor de su operando.
Operador | Uso | Descripci�n |
++ | op ++ | Incrementa op en 1; eval�a el valor antes de incrementar |
++ | ++ op | Incrementa op en 1; eval�a el valor despu�s de incrementar |
-- | op -- | Decrementa op en 1; eval�a el valor antes de decrementar |
-- | -- op | Decrementa op en 1; eval�a el valor despu�s de decrementar |
�Operadores Relacionales y Condicionales
Los valores relacionales comparan dos valores y determinan la relaci�n entre ellos. Por ejemplo, != devuelve true si los dos operandos son distintos.
Esta tabla sumariza los operadores relacionales de Java.
Operador | Uso | Devuelve true si |
> | op1 > op2 | op1 es mayor que op2 |
>= | op1 >= op2 | op1 es mayor o igual que op2 |
< | op1 < op2 | op1 es menor que op2 |
<= | op1 <= op2 | op1 es menor o igual que op2 |
== | op1 == op2 | op1 y op2 son iguales |
!= | op1 != op2 | op1 y op2 son distintos |
Frecuentemente los operadores relacionales se utilizan con otro juego de operadores, los operadores condicionales, para construir expresiones de decisi�n m�s complejas. Uno de estos operadores es && que realiza la operaci�n Y booleana . Por ejemplo puedes utilizar dos operadores relacionales diferentes junto con && para determinar si ambas relaciones son ciertas. La siguiente l�nea de c�digo utiliza esta t�cnica para determinar si un indice de un array est� entre dos l�mites- esto es, para determinar si el indice es mayor que 0 o menor que NUM_ENTRIES (que se ha definido pr�viamente como un valor constante):
0 < index && index < NUM_ENTRIES
Observa que en algunas situaciones, el segundo operando de un operador relacional no ser� evaluado. Consideremos esta sentencia:
((count > NUM_ENTRIES) && (System.in.read() != -1))
Si count es menor que NUM_ENTRIES, la parte izquierda del operando de && eval�a a false. El operador && s�lo devuelve true si los dos operandos son verdaderos. Por eso, en esta situaci�n se puede deteminar el valor de && sin evaluar el operador de la derecha. En un caso como este, Java no eval�a el operando de la derecha. As� no se llamar� a System.in.read() y no se leer� un car�cter de la entrada estandard.
Aqu� tienes tres operadores condicionales.
Operador | Uso | Devuelve true si |
&& | op1 && op2 | op1 y op2 son verdaderos |
|| | op1 || op2 | uno de los dos es verdadero |
! | ! op | op es falso |
El operador & se puede utilizar como un sin�nimo de && si ambos operadores son booleanos. Similarmente, | es un sinonimo de || si ambos operandos son booleanos.
�Operadores de Desplazamiento
Los operadores de desplazamiento permiten realizar una manipualci�n de los bits de los datos. Esta tabla sumariza los operadores l�gicos y de desplazamiento disponibles en el lenguaje Java.
Operador | Uso | Descripci�n |
>> | op1 >> op2 | desplaza a la derecha op2 bits de op1 |
<< | op1 << op2 | desplaza a la izquierda op2 bits de op1 |
>>> | op1 >>> op2 | desplaza a la derecha op2 bits de op1(sin signo) |
& | op1 & op2 | bitwise and |
| | op1 | op2 | bitwise or |
^ | op1 ^ op2 | bitwise xor |
~ | ~ op | bitwise complemento |
Los tres operadores de desplazamiento simplemente desplazan los bits del operando de la izquierda el n�mero de posiciones indicadas por el operador de la derecha. Los desplazamientos ocurren en la direcci�n indicada por el propio operador. Por ejemplo:
13 >> 1;
desplaza los bits del entero 13 una posici�n a la derecha. La representaci�n binaria del n�mero 13 es 1101. El resultado de la operaci�n de desplazamiento es 110 o el 6 decimal. Observe que el bit situado m�s a la derecha desaparece. Un desplazamiento a la derecha de un bit es equivalente, pero m�s eficiente que, dividir el operando de la izquierda por dos. Un desplazamiento a la izquierda es equivalente a multiplicar por dos.
Los otros operadores realizan las funciones l�gicas para cada uno de los pares de bits de cada operando. La funci�n "y" activa el bit resultante si los dos operandos son 1.
op1 | op2 | resultado |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Supon que quieres evaluar los valores 12 "and" 13:
12 & 13
El resultado de esta operaci�n es 12. �Por qu�? Bien, la representaci�n binaria de 12 es 1100 y la de 13 es 1101. La funci�n "and" activa los bits resultantes cuando los bits de los dos operandos son 1, de otra forma el resultado es 0. Entonces si colocas en l�nea los dos operandos y realizas la funci�n "and", puedes ver que los dos bits de mayor peso (los dos bits situados m�s a la izquierda de cada n�mero) son 1 as� el bit resultante de cada uno es 1. Los dos bits de menor peso se eval�an a 0 poque al menos uno de los dos operandos es 0:
1101 & 1100 ------ 1100
El operador | realiza la operaci�n O inclusiva y el operador ^ realiza la operaci�n O exclusiva. O inclusiva significa que si uno de los dos operandos es 1 el resultado es 1.
op1 | op2 | resultado |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
O exclusiva significa que si los dos operandos son diferentes el resultado es 1, de otra forma el resultado es 0.
op1 | op2 | resultado |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Y finalmente el operador complemento invierte el valor de cada uno de los bites del operando: si el bit del operando es 1 el resultado es 0 y si el bit del operando es 0 el resultado es 1.
�Operadores de Asignaci�n
Puedes utilizar el operador de asignaci�n =, para asignar un valor a otro. Adem�s del operador de asignaci�n b�sico, Java proporciona varios operadores de asignaci�n que permiten realizar operaciones aritm�tcias, l�gicas o de bits y una operaci�n de asignaci�n al mismo tiempo. Especificamente, supon que quieres añadir un n�mero a una variable y asignar el resultado dentro de la misma variable, como esto:
i = i + 2;
Puedes ordenar esta sentencia utilizando el operador +=.
i += 2;
Las dos l�neas de c�digo anteriores son equivalentes.
Esta tabla lista los operadores de asignaci�n y sus equivalentes.
Operador | Uso | Equivale a |
+= | op1 += op2 | op1 = op1 + op2 |
-= | op1 -= op2 | op1 = op1 - op2 |
*= | op1 *= op2 | op1 = op1 * op2 |
/= | op1 /= op2 | op1 = op1 / op2 |
%= | op1 %= op2 | op1 = op1 % op2 |
&= | op1 &= op2 | op1 = op1 & op2 |
|= | op1 |= op2 | op1 = op1 | op2 |
^= | op1 ^= op2 | op1 = op1 ^ op2 |
<<= | op1 <<= op2 | op1 = op1 << op2 |
>>= | op1 >>= op2 | op1 = op1 >> op2 |
>>>= | op1 >>>= op2 | op1 = op1 >>> op2 |