Wednesday, April 14, 2010

Operadores en Java

Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++. Estos operadores se describen brevemente en los apartados siguientes.


Operadores aritméticos

Son operadores binarios (requieren siempre dos operando) que realizan las operaciones aritméticas habituales: suma (+), resta (-), multiplicación (*), división (/) y resto de la división (%).


Operadores de asignación

Los operadores de asignación permiten asignar un valor a una variable. El operador de asignación por excelencia es el operador igual (=). La forma general de las sentencias de asignación con este operador es:

Operador  Utilización  Expresión equivalente
+=        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

variable = expression;
Tabla 2.2. Otros operadores de asignación.



Java dispone de otros operadores de asignación. Se trata de versiones abreviadas del operador (=) que realizan operaciones “acumulativas” sobre una variable. La Tabla 2.2 muestra estos operadores y su equivalencia con el uso del operador igual (=).


Operadores unarios

Los operadores más (+) y menos (-) unarios sirven para mantener o cambiar el signo de una variable, constante o expresión numérica. Su uso en Java es el estándar de estos operadores.


Operador instanceof

El operador instanceof permite saber si un objeto pertenece o no a una determinada clase. Es un operador binario cuya forma general es, objectName instanceof ClassName y que devuelve true o false según el objeto pertenezca o no a la clase.

Operador condicional ?:


Este operador, tomado de C/C++, permite realizar bifurcaciones condicionales sencillas. Su forma general es la siguiente:

booleanExpression ? res1 : res2


Donde se evalúa booleanExpression y se devuelve res1 si el resultado es true y res2 si el resultado es false. Es el único operador ternario (tres argumentos) de Java. Como todo operador que devuelve un valor puede ser utilizado en una expresión. Por ejemplo las sentencias:

x=1 ; y=10; z = ( x < y ) ? x+3:y+8;
asignarían a z el valor 4, es decir x+3.
Operadores incrementales

Java dispone del operador incremento (++) y decremento (--). El operador (++) incrementa en una unidad la variable a la que se aplica, mientras que (--) la reduce en una unidad. Estos operadores se pueden utilizar de dos formas:

1. Precediendo a la variable (por ejemplo: ++i). En este caso primero se incrementa la variable y luego se utiliza (ya incrementada) en la expresión en la que aparece.

2. Siguiendo a la variable (por ejemplo: i++). En este caso primero se utiliza la variable en la expresión (con el valor anterior) y luego se incrementa.

En muchas ocasiones estos operadores se utilizan para incrementar una variable fuera de una expresión. En este caso ambos operadores son equivalente. Si se utilizan en una expresión más complicada, el resultado de utilizar estos operadores en una u otra de sus formas será diferente. La actualización de contadores en bucles for es una de las aplicaciones más frecuentes de estos
operadores.

Operadores relacionales


Los operadores relacionales sirven para realizar comparaciones de igualdad, desigualdad y relación de menor o mayor. El resultado de estos operadores es siempre un valor boolean (true o false) según se cumpla o no la relación considerada.

La Tabla 2.3 muestra los operadores relacionales de Java.

Operador  Utilización    El resultado es true
>         op1 > op2      si op1 es mayor que op2
>=        op1 >= op2     si op1 es mayor o igual que op2
<         op1 < op2      si op1 es menor que op2
<=        op1 <= op2     si op1 es menor o igual que op2
==        op1 == op2     si op1 y op2 son iguales
!=        op1 != op2     si op1 y op2 son diferentes

Tabla 2.3. Operadores relacionales.

Operadores lógicos


Los operadores lógicos se utilizan para construir expresiones lógicas, combinando valores lógicos (true y/o false) o los resultados de los operadores relacionales. La Tabla 2.4 muestra los operadores lógicos de Java. Debe notarse que en ciertos casos el segundo operando no se evalúa porque ya no es necesario (si ambos tienen que ser true y el primero es false, ya se sabe que la condición de que ambos sean true no se va a cumplir). Esto puede traer resultados no deseados y por eso se han añadido los operadores (&) y (|) que garantizan que los dos operandos se evalúan siempre.
Operador  Nombre     Utilización   Resultado
&&        AND        op1 && op2    true si op1 y op2 son true. Si op1 es false ya no se evalúa op2
||        OR         op1 || op2    true si op1 u op2 son true. Si op1 es true ya no se evalúa op2.
!         negación   ! op          true si op es false y false si op es true
&         AND        op1 & op2     true si op1 y op2 son true. Siempre se evalúa op2
|         OR         op1 | op2     rue si op1 u op2 son true. Siempre se evalúa op2

Tabla 2.4. Operadores lógicos.


Operador de concatenación de cadenas de caracteres (+)


El operador más (+) se utiliza también para concatenar cadenas de caracteres. Por ejemplo, para escribir una cantidad con un rótulo y unas unidades puede utilizarse la sentencia:

System.out.println("El total asciende a " + result + " unidades");

Donde el operador de concatenación se utiliza dos veces para construir la cadena de caracteres que se desea imprimir por medio del método println(). La variable numérica result es convertida automáticamente por Java en cadena de caracteres para poderla concatenar. En otras ocasiones se deberá llamar explícitamente a un método para que realice esta conversión.


Precedencia de operadores

El orden en que se realizan las operaciones es fundamental para determinar el resultado de una expresión. Por ejemplo, el resultado de x/y*z depende de qué operación (la división o el producto) se realice primero. La siguiente lista muestra el orden en que se ejecutan los distintos operadores en un sentencia, de mayor a menor precedencia:
postfix operators  [] . (params) expr++ expr--
unary operators    ++expr --expr +expr -expr ~ !
creation or cast   new (type)expr
multiplicative     */%
additive           +-
shift              << >> >>>
relational         < > <= >= instanceof
equality           == !=
bitwise            AND &
bitwise            exclusive OR ^
bitwise            inclusive OR |
logical            AND &&
logical            OR ||
conditional        ?:
assignment         = += -= *= /= %= &= ^= |= <<= >>= >>>=

En Java, todos los operadores binarios, excepto los operadores de asignación, se evalúan de izquierda a derecha. Los operadores de asignación se evalúan de derecha a izquierda, lo que significa que el valor de la derecha se copia sobre la variable de la izquierda.

Fuente: http://multiprogrammers.foroactivo.com

0 comentarios:

Post a Comment