EXPRESIONES
Una expresión es un conjunto de variables, constantes y/ó
funciones unidas mediante uno o varios operadores. El resultado será un único
valor numérico, lógico o una cadena de caracteres. Si las expresiones son muy
complejas se suelen encerrar entre paréntesis para distinguir el orden de
ejecución de la misma. Lo que está entre paréntesis siempre es lo primero que
se ejecuta ya que este operador es el más prioritario de todos.
Ej: x=5*(6+4);
En el ejemplo lo primero que se ejecuta es la suma ya que
está entre paréntesis, si no estuviesen los paréntesis se ejecutaría primero el
producto puesto que su operador es más prioritario.
En la siguiente tabla se muestra el orden de precedencia de
los operadores ordenados de más a menos prioritario:
Máxima prioridad
|
|
Expresión
|
( ) [ ]
|
Unarios
|
- ! ++ --
|
Multiplicativos
|
* / %
|
Aditivos
|
+ -
|
De
movimiento de bits
|
>>
<<
|
Relacionales
|
< <=
> >= == !=
|
Lógicos
|
& ^|
&& ||
|
Condicionales
|
?
|
Asignación
|
=
|
Minima prioridad
|
En los puntos siguientes los explico con más detalle.
OPERADORES
ARITMÉTICOS
Permiten realizar operaciones aritméticas con datos
numéricos.
Operador
|
Descripción
|
Sintaxis
|
+
|
suma
|
valor1 +
valor2
|
-
|
resta
|
valor1 –
valor2
|
*
|
producto
|
Valor1 *
valor2
|
/
|
división
|
Valor1 /
valor2
|
%
|
módulo
(resto división entera)
|
Valor1 %
valor2
|
++
|
incremento
|
variable++
ó ++variable
|
--
|
decremento
|
Variable
-- ó --variable
|
-
|
cambio de
signo
|
-valor
|
Operadores suma,
resta, producto, división y módulo
En el siguiente ejemplo se declaran dos números enteros con
los que se realizan una serie de operaciones (suma, resta, producto, división y
módulo). El resultado de cada operación se almacena en la variable resultado.
Cada vez que se almacena un nuevo resultado se pierde el anterior por eso se
imprime por pantalla antes:
la salida de este código es:
El resultado de dividir x (5) entre y (2) es 2. Esto se debe
a que x e y son números enteros por lo tanto se hace la división entera. No
queda exacta, sobraría uno. Se puede obtener ese dato con el modulo (%) que
devuelve 1, ya que es lo que sobra de la división. Es el resto.
Si lo que se pretende es que el resultado sea un numero
real, hay que usar variables reales para que el operador no realice una
división entera:
El resultado será un numero real:
Operadores de
incremento y decremento
Estos operadores son unarios o monarios. Esto significa que
afectan a una única variable. Se pueden usar tanto delante (prefijo) como
detrás (postfijo) de la variable sobre la que se quiere hacer la operación. El
resultado será el mismo (incrementar o decrementar):
En la salida se puede ver que la y se ha ido decrementando
en una unidad y la x incrementándose también en una unidad:
Hay que tener cuidado si se usan estos operadores en una
asignación ya que el resultado cambiará si se usa el operador prefijo o el
postfijo:
Salida:
Como se ve en la salida, el operador prefijo, primero
modifica x y luego asigna el nuevo valor a y. En el caso del postfijo es al
revés. Primero asigna el valor de x a y, luego modifica x. En los dos casos la
variable a la que afecta el operador se ve afectada, la diferencia está en la
variable a la que se le asigna el valor.
Operador de cambio de
signo
El operador de cambio de signo es igual que el operador de
resta, pero su funcionamiento es distinto. Al colocar este operador delante de
una variable en una asignación hace que el dato guardado sea de signo apuesto
al original:
Salida:
OPERADORES
RELACIONALES
Permiten comparar dos valores numéricos o caracteres.
Devuelven true o false en función de que la comparación sea cierta o falsa.
Operador
|
Descripción
|
Sintaxis
|
>
|
mayor
exclusivo
|
Valor1
> valor2
|
<
|
menor
exclusivo
|
Valor1
< valor2
|
>=
|
mayor o
igual
|
Valor1
>= valor2
|
<=
|
menor o
igual
|
Valor1
<= valor2
|
==
|
igualdad
|
Valor1 ==
valor2
|
!=
|
desigualdad
|
Valor1 !=
valor2
|
La salida de este código es:
NOTA: No hay que confundir el operador de igualdad (==) con
el de asignación (=).
OPERADORES LÓGICOS
Permiten unir expresiones lógicas para evaluarlas en
conjunto y saber si son true o false.
Operador
|
Descripción
|
Sintaxis
|
&&
|
conjunción
(and)
|
Expresión
&& expresión
|
||
|
disyunción
(or)
|
Expresión
|| expresión
|
!
|
negación
(not)
|
! expresion
|
&&
Las dos expresiones deben ser true para que la expresión
completa sea true:
&&
|
true
|
false
|
true
|
true
|
false
|
false
|
false
|
false
|
||
Es suficiente que una de las dos expresiones sea true para
que la expresión completa lo sea:
||
|
true
|
false
|
true
|
true
|
true
|
false
|
true
|
false
|
!
Niega la expresión. El valor será el contrario:
!
|
true
|
false
|
false
|
true
|
OPERADORES DE
ASIGNACIÓN
Asignan el valor de la expresión de la derecha en la
variable de la izquierda. Siempre se evalúa la parte derecha primero. No es una
ecuación.
Operador
|
Descripción
|
Sintaxis
|
Equivalente a
|
=
|
asignación
|
variable=expresión
|
|
+=
|
suma
|
variable+=expresión
|
variable=variable+expresión
|
-=
|
resta
|
variable-=expresión
|
variable=variable-expresión
|
*=
|
producto
|
variable*=expresión
|
variable=variable*expresión
|
/=
|
división
|
variable/=expresión
|
variable=variable/expresión
|
%=
|
módulo
|
variable%=expresión
|
variable=variable%expresión
|
El resultado de la suma (x+y) se almacena en z:
El primer operador de la tabla es el de asignación, el resto
son abreviaciones de expresiones más largas que contienen en la parte derecha
la misma variable que se encuentra en la parte izquierda de la asignación:
OPERADOR ?
Sirve para realizar asignaciones condicionales. Es decir, se
evaluará una expresión lógica y dependiendo de si es true o false se asignará
un valor u otro. La sintaxis es la siguiente:
variable = expresión_logica ? valor_verdadero : valor_falso;
En el siguiente ejemplo se compran dos valores enteros. Si x
es mayor que y entonces se guarda en resultado el primer valor (“X es mayor”)
que se corresponde con el verdadero, sino se guarda el segundo (“Y es mayor”)
que se corresponde con el falso:
El resultado es el siguiente:
OPERADORES A NIVEL DE
BITS
Estos operadores trabajan desde el nivel interno de los
datos, sus bits (0s y 1s). En computación el 1 representa un valor verdadero y
el 0 un valor falso por lo que las operaciones que se realiza con ellos son
logicas y funcionan de forma similar a las que se realizan con los operadores
&& (and) y || (or).
Operador
|
Descripción
|
Sintaxis
|
&
|
Conjunción
de bits (and)
|
dato1
& dato2
|
|
|
Disyunción
de bits (or)
|
dato1 |
dato2
|
^
|
Disyunción
excluyente de bits (xor)
|
dato1 ^
dato2
|
<<
|
Desplazamiento
de bits a la izquierda
|
dato1
<< numero_bits
|
>>
|
Desplazamiento
de bits a la derecha
|
dato1
>> numero_bits
|
~
|
Complemento
|
~dato
|
En este post no los explicaré. Si le interesan a alguien puedo hacer un post solo para ellos porque son algo extensos de explicar.
OPERADORES CON
OBJETOS
Existen otros operadores que se usan con objetos pero los explicaré más adelante. Son los tres siguientes:
instanceof
Este operador sirve para saber si un objeto es idéntico a
una clase. Es muy útil en herencia.
this
Permite identificar la clase a la que pertenece un objeto.
new
El operador new sirve para reservar memoria e instanciar
objetos.