CONVERSIÓN ENTRE TIPOS DE DATOS
Cuando Java tiene que evaluar una
expresión en la que intervienen operandos de diferentes tipos, primero
convierte, sólo para realizar las operaciones solicitadas, los valores de los
operandos al lipo del operando cuya precisión sea más alta. Cuando se trate de
una asignación, convierte el valor de la derecha al tipo de la variable de la
izquierda siempre que no haya pérdida de información. En otro caso, Java exige
que la conversión se realice explícitamente.
Java permite una conversión
explícita (conversión forzada) del tipo de una expresión mediante una construcción
denominada cast, que tiene la forma:
(tipo) expresión
Cualquier valor de un tipo entero
o real puede ser convertido a o desde cualquier tipo numérico. No se pueden
realizar conversiones entre los tipos enteros o reales y el tipo boolean.
La expresión es convertida al
tipo especificado si esa conversión está permitida; en otro caso, se obtendrá
un error. La utilización apropiada de construcciones cast garantiza una
evaluación consistente, pero siempre que se pueda, es mejor evitarla ya que
suprime la verificación de tipo proporcionada por el compilador y por
consiguiente puede conducir a resultados inesperados, o cuando menos. a una pérdida
de precisión en el resultado.
OPERADORES
Los operadores son símbolos que
indican cómo son manipulados los datos. Se pueden clasificar en los siguientes
grupos: aritméticos, relacionales, lógicos, unitarios, a nivel de bits, de
asignación y operador condicional.
Operadores aritméticos
Los operadores aritméticos los
utilizamos para realizar operaciones matemáticas y son los siguientes:
OPERADOR
|
DESCRIPCIÓN
|
+
|
Suma
|
–
|
Resta
|
*
|
Multiplicación
|
/
|
División
|
%
|
Resto de una división entre enteros (en
otros lenguajes denominado mod)
|
Cuando en una operación
aritmética los operandos son de diferentes tipos, ambos son convertidos al tipo
del operando de precisión más alta. Por ejemplo. para realizar la suma .x+a el
valor del entero a es convertido a float, tipo de x. No se modifica a, sino que
su valor es convertido a float sólo para realizar la suma. Los tipos short y
byte son convertidos de manera automática a int.
En una asignación, el resultado
obtenido en una operación aritmética es convertido implícita o explícitamente
al tipo de la variable que almacena dicho resultado (véase "Conversión
entre lipos de datos"). Por ejemplo. del resultado de rlv sólo La parte
entera es asignada a e, ya que e es de tipo int. Esto indica que los reales son
convertidos a enteros, truncando la parte fraccionaria.
Operadores de relación
Los operadores de relación o de
comparación permiten evaluar la igualdad y la magnitud. El resultado de una
operación de relac1ón es un valor booleano true o false. Los operadores de
relación son los siguientes:
Operador
|
Utilización
|
Resultado
|
>
|
A > B
|
verdadero si A es mayor que B
|
>=
|
A >= B
|
verdadero si A es mayor o igual que B
|
<
|
A < B
|
verdadero si A es menor que B
|
<=
|
A <= B
|
verdadero si A es menor o igual que B
|
==
|
A == B
|
verdadero si A es igual a B
|
!=
|
A != B
|
verdadero si A es distinto de B
|
Un operador de relación equivale
a una pregunta relativa a cómo son dos operandos entre sí. Por ejemplo, la
expresión x= =y equivale a la pregunta ¿x es igual a y? Una respuesta si
equivale a un valor verdadero (true) y una respuesta no equivale a un valor
falso (false).
Operadores lógicos
El resultado de una operación
lógica (AND, OR, XOR y NOT) es un valor booleano verdadero o falso (true o
false). Las expresiones que dan como resultado valores booleanos pueden
combinarse para formar expresiones booleanas utilizando los operadores lógicos
indicados a continuación .Los operandos deben ser expresiones que den un
resultado boolean.
OPERADOR
|
DESCRIPCIÓN
|
==
|
Es igual
|
!=
|
Es distinto
|
<,
<=, >, >=
|
Menor, menor o igual,
mayor, mayor o igual
|
&&
|
Operador and (y)
|
||
|
Operador or (o)
|
!
|
Operador not (no)
|
Operadores unitarios
Los operadores unitarios se
aplican a un solo operando y son los siguientes: !, - , ..... , ++y --.
+
Operador unario «más», indica un valor positivo (sin embargo los número
son positivos sin el operador)
-
Operador unario «menos»; niega una expresión
++
Operador de incremento; incrementa un valor en 1
--
Operador de decremento; decrementa un valor en 1
!
Operador de complemento lógico; invierte el valor de un booleano
Operadores a nivel de bits
Estos operadores permiten
realizar con sus operandos las operaciones ANO, OR, XOR y desplazamientos, bit
por bit. Los operandos tienen que ser enteros.
Operador
|
Utilización
|
Resultado
|
<<
|
A << B
|
Desplazamiento de A a la izquierda en B
posiciones
|
>>
|
A >> B
|
Desplazamiento de A a la derecha en B
posiciones, tiene en cuenta el signo.
|
>>>
|
A >>> B
|
Desplazamiento de A a la derecha en B
posiciones, no tiene en cuenta el signo.
|
&
|
A & B
|
Operación AND a nivel de bits
|
|
|
A | B
|
Operación OR a nivel de bits
|
^
|
A ^ B
|
Operación XOR a nivel de bits
|
~
|
~A
|
Complemento de A a nivel de bits
|
Operadores de asignación
El resultado de una operación de
asignación es el valor almacenado en el operando izquierdo, lógicamente después
de que la asignación se ha realizado. El valor que se asigna es convertido
implícita o explícitamente al tipo del operando de la izquierda.
Operación
|
Operador
|
Utilización
|
Suma
|
+=
|
A += B
|
Resta
|
-=
|
A -= B
|
Multiplicación
|
*=
|
A *= B
|
División
|
/=
|
A /= B
|
Resto de división
|
%=
|
A %= B
|
Desplazamiento a la izquierda
|
<<=
|
A <<= B
|
Desplazamiento a la derecha
|
>>=
|
A >>= B
|
Desplazamiento a la derecha sin signo
|
>>>=
|
A >>>= B
|
AND de bits
|
&=
|
A &= B
|
OR de bits
|
|=
|
A |= B
|
XOR de bits
|
^=
|
A ^= B
|
Operador condicional
El operador condicional
(?:),llamado también operador ternario, se utiliza en expresiones condicionales,
que tienen la forma siguiente:
operando} ? operando2: operando3
La expresión operando] debe ser
una expresión booleana. La ejecución se realiza de la siguiente forma:
• Si el resultado de la
evaluación de operando] es true, el resultado de la expresión
condicional es operando2.
• Si el resultado de la
evaluación de operando] es false, el resultado de la expresión
condicional es operando3.
PRIORIDAD Y ORDEN DE EVALUACIÓN
La tabla que se presenta a
continuación, resume las reglas de prioridad y asociatividad de todos los
operadores. Las líneas se han colocado de mayor a menor prioridad.
Los operadores escritos sobre una
misma línea tienen la misma prioridad. Una expresión entre paréntesis, siempre
se evalúa primero. Los paréntesis tienen mayor prioridad y son evaluados de más
internos a más externos.
Operador
|
Asocia ti vi dad
|
{ ) [] .
|
izquierda a derecha
|
-- ! ++ --
|
derecha a izquierda
|
new (tipolexpresí6n
|
derecha a izquierda
|
* 1 %
|
izquierda a derecha
|
+ -
|
izquierda a derecha
|
« » »>
|
izquierda a derecha
|
< <= > >- instanceof
|
izquierda a derecha
|
!=
|
izquierda a derecha
|
&
|
izquierda a derecha
|
"
|
izquierda a derecha
|
&&
|
izquierda a derecha
|
11
|
izquierda a derecha
|
? :
|
izquierda a derecha
|
e *= /~ %• +- -• ((= ))= )))• &= 1= "=
|
derecha a izquierda
|
En Java, todos los operadores
binarios excepto los de asignación son evaluados de izquierda a derecha.
No hay comentarios:
Publicar un comentario