Académique Documents
Professionnel Documents
Culture Documents
En la siguiente tabla aparecen los operadores que se utilizan en Java, por orden de
precedencia:
. [] ()
++ --
! ~ instanceof
* / %
+ -
<< >> >>>
< > <= >= == !=
& ^ |
&& ||
? :
= op= (*= /= %= += -= etc.) ,
Para las cadenas, se pueden utilizar los operadores relacionales para comparaciones
además de + y +=para la concatenación:
Operadores Aritméticos
Java soporta varios operadores aritméticos que actúan sobre números enteros y
números en coma flotante. Los operadores binarios soportados por Java son:
Esta operación hace que se tome la representación como cadena del valor
de miVariable para su uso exclusivo en la expresión. De ninguna forma se altera el
valor que contiene la variable.
El operador módulo (%), que devuelve el resto de una división, a diferencia de C++,
en Java funciona con tipos en coma flotante además de con tipos enteros. Cuando
se ejecuta el programa que se muestra en el ejemplo java401.java.
La salida que se obtiene por pantalla tras la ejecución del ejemplo es la que se
reproduce a continuación:
%java java401
x mod 10 = 3
y mod 10 = 3.299999999999997
Los operadores unarios que soporta Java son
Los programadores C++ se encontrarán con que Java restringe el uso de estos
operadores, porque en C++ la representación de true y false es muy diferente a
Java. En Java, los operandos de estos operadores deben ser tipos booleanos, o
expresiones que devuelvan un tipo booleano, mientras que en C++ puede ser
cualquier tipo entero o expresión que devuelva un tipo entero, sin restricciones.
Una característica importante del funcionamiento de los operadores && y ||, tanto
en Java como en C++ (y que es pasado a veces por alto, incluso por
programadores experimentados) es que las expresiones se evalúan de izquierda a
derecha y que la evaluación de la expresión finaliza tan pronto como se pueda
determinar el valor de la expresión. Por ejemplo, en la expresión siguiente:
( a < b ) || ( c < d )
Los operadores de bits que soporta Java son los que aparecen en la siguiente
tablita:
& Operando & Operando Realiza una operación AND lógiga entre los dos operandos
En Java, el operador de desplazamiento hacia la derecha sin signo, rellena los bits
que pueden quedar vacíos con ceros. Los bits que son desplazados fuera del
entorno se pierden.
Operadores de Asignación
El operador = es un operador binario de asignación de valores. El valor almacenado
en la memoria y representado por el operando situado a la derecha del operador es
copiado en la memoria indicada por el operando de la izquierda. Al contrario que en
C++, el operador de asignación (ni ningún otro) no se puede sobrecargar en Java.
+= -= *= /= %= &= |= ^= <<=
>>= >>>=
Por ejemplo, las dos sentencias que siguen realizan la misma función:
x += y;
x = x + y;
Puede resultar útil para evaluar algún valor que seleccione una expresión a utilizar,
como en la siguiente sentencia:
Cuando Java evalúa la asignación, primero mira la expresión que está a la izquierda
del interrogante. Sidenominador es cero, entonces evalúa la expresión que está
entre el interrogante y los dos puntos, y se utiliza como valor de la expresión
completa. Si denominador no es cero, entonces evalúa la expresión que está
después de los dos puntos y se utiliza el resultado como valor de la expresión
completa, que se asigna a la variable que está a la izquierda del operador de
asignación, cociente.
class java402 {
public static void main( String args[] ) {
int a = 28;
int b = 4;
int c = 45;
in t d = 0;
El programa se ejecuta sin errores, y la salida que genera por pantalla es la que se
reproduce:
%java java402
a = 28
b=4
c = 45
d=0
a/b=7
c/d=0
int f = c / d;
%java java402
java.lang.ArithmeticException: / by zero at java402.main(java402.java:40)
while( x = y ) {
// . . .
}
EL programador intenta realmente hacer una equivalencia (==) en vez de una
asignación. En C/C++ el resultado de esta asignación siempre será true si y no es
cero, y lo más seguro es que esto se convierta en un bucle infinito. En Java, el
resultado de esta expresión no es un booleano, y el compilador espera un booleano,
que no puede conseguir a partir de un entero, así que aparecerá un error en tiempo
de compilación que evitará que el programa se caiga al ejecutarlo. Es decir, este
error tan común, para que se dé en Java tienen que ser x e y booleanos, lo cual no
es lo más usual.
Moldeo(casting) de Operadores
Es lo que se conoce como casting, refiriéndose a "colocar un molde". Java
automáticamente cambia el tipo de un dato a otro cuando es pertinente. Por
ejemplo, si se asigna un valor entero a una variable declarada como flotante, el
compilador convierte automáticamente el int a float. El casting, o moldeo,
permite hacer esto explícitamente, o forzarlo cuando normalmente no se haría.
Para realizar un moldeo, se coloca el tipo de dato que se desea (incluyendo todos
los modificadores) dentro de paréntesis a la izquierda del valor. Por ejemplo:
void moldeos() {
int i = 100;
long l = (long)i;
l ong l 2 = ( l ong )200 ;
}
Como se puede ver, es posible realizar el moldeo de un valor numérico del mismo
modo que el de una variable. No obstante, en el ejemplo el moldeo es superfluo
porque el compilador ya promociona los enteros a flotantes cuando es necesario
automáticamente, sin necesidad de que se le indique. Aunque hay otras ocasiones
en que es imprescindible colocar el moldeo para que el código compile.