Buscar este blog

miércoles, 15 de junio de 2016

CONVERSIÓN ENTRE TIPOS DE DATOS Y OPERADORES

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