La siguiente tabla muestra todos los operadores del lenguaje Java
OPERADORES
JAVA
|
||||||
ARITMÉTICOS
|
RELACIONALES
|
LÓGICOS
|
UNITARIOS
|
A
NIVEL DE BITS
|
ASIGNACIÓN
|
CONDICIONAL
|
+
|
<
|
&&
|
+
|
&
|
=
|
?
:
|
-
|
<=
|
||
|
-
|
|
|
+=
|
|
*
|
>
|
!
|
++
|
^
|
-=
|
|
/
|
>=
|
--
|
<<
|
*=
|
||
%
|
!=
|
~
|
>>
|
/=
|
||
==
|
!
|
>>>
|
%=
|
|||
<<=
|
||||||
>>=
|
||||||
>>>=
|
||||||
&=
|
||||||
|=
|
||||||
^=
|
Los operadores aritméticos en java son:
+ Suma.
Los operandos pueden ser enteros o reales
- Resta.
Los operandos pueden ser enteros o reales
* Multiplicación.
Los operandos pueden ser enteros o reales
/ División. Los operandos pueden ser
enteros o reales. Si ambos son enteros el resultado es entero. En cualquier otro caso el resultado es real.
% Resto de la división. Los
operandos pueden ser de tipo entero o real.
Ejemplo de operaciones aritméticas
Supongamos que tenemos las siguientes variables:
int a = 10, b = 3;
double v1 = 12.5,
v2 = 2.0;
char c1='P',
c2='T';
En la tabla se muestran distintas operaciones aritméticas que podemos hacer con ellas:
Operación
|
Valor
|
Operación
|
Valor
|
Operación
|
Valor
|
a+b
|
13
|
v1+v2
|
14.5
|
c1
|
80
|
a-b
|
7
|
v1-v2
|
10.5
|
c1
+ c2
|
164
|
a*b
|
30
|
v1*v2
|
25.0
|
c1
+ c2 + 5
|
169
|
a/b
|
3
|
v1/v2
|
6.25
|
c1
+ c2 + ‘5’
|
217
|
a%b
|
1
|
v1%v2
|
0.5
|
En las operaciones aritméticas donde intervienen variables de tipo char, el valor utilizado para realizar el cálculo es el valor numérico del carácter correspondiente según la tabla ASCII o UNICODE.
Por eso, según vemos en el ejemplo: c1 + c2 = 164.
c1 = 'P' y el valor numérico de 'P' según la tabla ASCII es 80.
c2 = 'T' y el valor numérico de 'T' según la tabla ASCII es 84.
Por lo tanto cuando realizamos c1 + c2 el resultado es 80 + 84 = 164.
Como ya se ha comentado antes, Java es un lenguaje fuertemente tipado. Por eso es importante saber de qué tipo es el resultado de una operación aritmética si intervienen datos de tipos distintos.
En aquellas operaciones en las que aparecen operandos de distinto
tipo, java convierte los valores al tipo de dato de mayor precisión de todos
los datos que intervienen y este será el tipo del resultado. Esta conversión se realiza de forma temporal, solamente para
realizar la operación. Los tipos de datos originales permanecen igual después
de la operación. Es muy importante tenerlo en cuenta para poder aignar el resultado de la operación a una variable del mismo tipo.
Respecto a la conversión temporal de tipos: Los tipos short, byte y char se convierten
automáticamente a int.
Por ejemplo, dadas las siguientes variables:
int i = 7;
double f = 5.5;
char c = 'w';
byte b = 1;
Operación
|
Valor
|
Tipo
|
i +
f
|
12.5
|
double
|
i + c
|
126
|
int
|
i + c – ‘0’
|
78
|
int
|
(i + c) – (2 * f / 5)
|
123.8
|
double
|
b + c
|
120
|
int
|
OPERADORES JAVA RELACIONALES
Los
operadores relacionales comparan dos operandos y dan como resultado de la
comparación verdadero ó falso.
Los
operadores relacionales en java son:
< Menor que
> Mayor que
<=
Menor o igual
>=
Mayor o igual
!= Distinto
== Igual
Los operandos
tienen que ser de tipo primitivo.
Por
ejemplo:
int a
= 7, b = 9, c = 7;
Operación
|
Resultado
|
a==b
|
false
|
a >=c
|
true
|
b < c
|
false
|
a != c
|
false
|
OPERADORES JAVA LÓGICOS
Los operadores lógicos se utilizan con operandos de tipo boolean. Se
utilizan para construir expresiones lógicas, cuyo resultado es de tipo true o
false.
Los
operadores lógicos en Java son:
&& AND. El resultado es verdadero si los dos operandos son verdaderos. El resultado es falso en caso contrario. Si el primer operando es falso no se evalúa el segundo, ya que el resultado será falso.
|| OR. El resultado es falso si los dos operandos son falsos. Si uno es verdadero el resultado es verdadero. Si el primer operando es verdadero no
se evalúa el segundo.
! NOT.
Se aplica sobre un solo operando. Cambia el valor del operando de verdadero a falso y viceversa.
Las
definiciones de las operaciones OR, AND y NOT se recogen en unas tablas
conocidas como tablas
de verdad.
A
|
B
|
A OR B
|
A
|
B
|
A AND B
|
A
|
NOT A
|
||||
F
|
F
|
F
|
F
|
F
|
F
|
F
|
V
|
||||
F
|
V
|
V
|
F
|
V
|
F
|
V
|
F
|
||||
V
|
F
|
V
|
V
|
F
|
F
|
||||||
V
|
V
|
V
|
V
|
V
|
V
|
F: Falso
V: Verdadero
Como ejemplo, en la siguiente tabla vemos una serie de expresiones lógicas y su valor:
V: Verdadero
Como ejemplo, en la siguiente tabla vemos una serie de expresiones lógicas y su valor:
int i = 7;
float f = 5.5F;
char c = 'w';
Expresión
|
Resultado
|
i >= 6 && c != 'w'
|
false
|
i >= 6 || c != 'w'
|
true
|
f < 10 && i > 100
|
false
|
!(c != 'p') || i % 2 == 0
|
false
|
i +
f <= 10
|
false
|
i
>= 6 && c == 'w' && f == 5
|
false
|
c
!= 'p' || i + f <= 10
|
true
|
Las expresiones lógicas en java se evalúan sólo hasta que se ha establecido el
valor cierto o falso del conjunto. Cuando, por ejemplo, una expresión va a ser
seguro falsa por el valor que ha tomado uno de sus operandos, no se evalúa el
resto de expresión.
OPERADORES JAVA UNITARIOS.
Los operadores unitarios en java son:
Los operadores unitarios en java son:
– + signos
negativo y positivo
++ --
incremento
y decremento
~ complemento a 1
! NOT. Negación
Estos operadores afectan a un solo operando.
El operador ++ (operador incremento) incrementa en 1 el valor
de la variable.
Ejemplo de operador incremento:
int i = 1;
i++; // Esta
instrucción incrementa en 1 la variable i.
// Es lo mismo que
hacer i = i + 1; i toma el valor 2
El operador –- (operador decremento) decrementa en 1 el valor
de la variable.
Ejemplo de operador decremento:
int i = 1;
i--; // decrementa en
1 la variable i.
// Es lo mismo que
hacer i = i - 1; i toma el valor 0
Los operadores incremento y decremento pueden utilizarse como prefijo o sufijo, es decir, pueden aparecer antes o después de la variable.
Por ejemplo:
i = 5;
i++; // i vale ahora
6
++i; // i vale ahora
7
Cuando estos operadores intervienen en una expresión, si preceden
al operando (++i), el valor se modificará antes de que se evalúe la expresión a
la que pertenece.
En cambio, si el operador sigue al operando (i++), entonces el valor del operando se modificará después de evaluar la expresión a la que pertenece.
Por ejemplo:
int x, i = 3;
x = i++;
En esta asignación a x se le asigna el valor 3 y a continuación i se incrementa, por lo tanto, después de ejecutarla:
x contiene 3, i contiene 4.
Si las instrucciones son:
int x, i = 3;
x = ++i;
En esta instrucción primero se incrementa i y el resultado se asigna a x. Por lo tanto, después de ejecutarla:
x contiene 4, i contiene 4.
Otro ejemplo:
int i = 1;
System.out.println(i);
System.out.println (++i);
System.out.println (i);
Estas instrucciones mostrarían por pantalla:
1
2
2
En cambio, si se cambia la posición del operador:
int i = 1;
System.out.println(i);
System.out.println (i++);
System.out.println (i);
Estas instrucciones mostrarían por pantalla:
1
1
2
El operador complemento a 1 ~ cambia de valor todos los bits del operando (cambia unos por ceros y ceros por unos). Solo puede usarse con datos de tipo entero. El carácter ~ es el ASCII 126.
Por ejemplo:
int a = 1, b;
b= ~a;
OPERADORES JAVA A NIVEL DE BITS
Realizan la manipulación de los bits de los datos con los que operan.
Los datos deben ser de tipo entero.
Los operadores a nivel de bits en java son:
& and a nivel de bits
| or
a nivel de bits
^ xor
a nivel de bits
<< desplazamiento a la izquierda, rellenando con ceros a la derecha
>> desplazamiento a la derecha, rellenando con el bit de signo por
la izquierda
>>> desplazamiento a la derecha rellenando con
ceros por la izquierda
OPERADORES JAVA DE ASIGNACIÓN.
Se
utilizan para asignar el valor de una expresión a una variable.
Los
operandos deben ser de tipo primitivo.
Los operadores de asignación en java son:
Los operadores de asignación en java son:
= Asignación
+= Suma y asignación
–= Resta y asignación
*= Producto y asignación
/= División y asignación
%= Resto de la división entera y asignación
<<= Desplazamiento a la izquierda y
asignación
>>= Desplazamiento a la derecha y
asignación
>>>= Desplazamiento a la derecha y asignación
rellenando con ceros
&= AND sobre bits y asignación
|= OR sobre bits y asignación
^= XOR sobre bits y asignación
Ejemplos de asignaciones:
x += 3; -> equivale a escribir x = x + 3;
y += 3; -> equivale a escribir y = x * 3;
En general
variable op= expresión equivale a: variable = variable
op expresión
Ejemplo: dadas las siguientes variables
int i = 5, j = 7, x = 2, y = 2, z = 2;
float f = 5.5F, g = -3.25F;
En la siguiente tabla vemos más ejemplos de asignaciones.
Expresión
|
Expresión equivalente
|
Valor final
|
i += 5
|
i = i + 5
|
10
|
f –= g
|
f = f – g
|
8.75
|
j *= (i – 3)
|
j = j * (i – 3)
|
14
|
f
/= 3
|
f =
f / 3
|
1.833333
|
i
%= (j - 2)
|
i =
i % (j – 2)
|
0
|
x *= -2 * (y + z) / 3
|
x = x * (-2 * (y + z) / 3)
|
-4
|
Importante: Si los dos operandos de una expresión de asignación (el de la
izquierda y el de la derecha) son de distinto tipo de datos es posible que la asignación no se pueda realizar. El valor de la
expresión de la derecha se asignará a la variable que aparece a la izquierda del operador de asignación siempre que sean del mismo tipo o de tipos compatibles.
Por ejemplo:
int n;
double m = 2.5;
n = m + 1; //esta instrucción produce un error.
Al intentar realizar la instrucción n = m + 1; se producirá un error. El resultado de la operación aritmética m + 1 es de tipo double y no se puede asignar a una variable de tipo int.
En este otro caso la asignación sí es posible:
double m;
int n = 2;
m = n + 50;
El resultado de la operación aritmética n + 50 es de tipo int y m es de tipo double. Aunque ambos tipos no coinciden, la asignación se puede realizar porque el rango de valores de un int es menor que el de un double y por lo tanto no puede haber pérdida de información.
En general, en una asignación del tipo A = B, si el rango de valores que puede almacenar A es mayor que el rango de valores que puede almacenar B entonces la asignación se podrá realizar. Por ejemplo, si A es de tipo double y B de tipo float la asignación A = B se puede hacer pero no se podrá realizar en caso contrario(siendo A float y B double).
Por último indicar que en Java
están permitidas las asignaciones múltiples.
Ejemplo: a = b = c = 3; equivale a: a = 3; b = 3; c = 3;
La asignación de valor a las variables en una asignación múltiple se realiza de derecha a izquierda. En el ejemplo, primero se asigna el valor 3 a c, a continuación el valor de c se asigna a b y finalmemte el valor de b se le asigna a a.
OPERADOR JAVA CONDICIONAL
Se puede utilizar en sustitución de la sentencia de control
if-else, pero hace las instrucciones menos claras.
El operador condicional java se forman con los caracteres ? y :
Se utiliza de la forma siguiente:
expresión1 ? expresión2 : expresión3
Si expresión1 es cierta entonces se evalúa expresión2 y éste
será el valor de la expresión condicional. Si expresión1 es falsa, se evalúa
expresión3 y éste será el valor de la expresión condicional.
Ejemplo de operador condicional:
int i = 10, j;
j = (i < 0) ? 0 :
100;
Esta expresión asigna a j el valor 100. Su significado es: si
el valor de i es menor que 0 asigna a j el valor 0, sino asigna a j el valor
100. Como i vale 10, a
j se le asigna 100.
La instrucción anterior es equivalente a escribir:
if(i < 0)
j = 0;
else
j =
100;
Más ejemplos de operador condicional:
int a = 1, b = 2, c = 3;
c += (a > 0 && a <= 10) ? ++a : a/b; // c toma el valor 5
int a = 50, b = 10, c = 20;
c += (a > 0 && a <= 10) ? ++a : a/b; // c
toma el valor 25
PRIORIDAD Y ORDEN DE EVALUACIÓN DE LOS OPERADORES EN JAVA
La siguiente tabla muestra todos los operadores Java ordenados de mayor a menor prioridad. La primera línea de la tabla contiene los operadores de mayor prioridad y la última los de menor prioridad. Los operadores que aparecen en la misma línea tienen la misma prioridad.
Una expresión entre paréntesis siempre se evalúa primero y si están anidados se evalúan de más internos a más externos.
Operador
|
Asociatividad
|
() [] .
|
Izquierda a derecha
|
++ -- ~ !
|
Derecha a izquierda
|
new
|
Derecha a izquierda
|
* / %
|
Izquierda a derecha
|
+ -
|
Izquierda a derecha
|
>>
>>> <<
|
Izquierda a derecha
|
> >= <
<=
|
Izquierda a derecha
|
== !=
|
Izquierda a derecha
|
&
|
Izquierda a derecha
|
^
|
Izquierda a derecha
|
|
|
Izquierda a derecha
|
&&
|
Izquierda a derecha
|
||
|
Izquierda a derecha
|
?:
|
Derecha a izquierda
|
= += -= *= ...
|
Derecha a izquierda
|
buena informacion
ResponderEliminarsi solo que deberían agregarle mas para que este mas completo
ResponderEliminarExcelente
ResponderEliminarchever gracias por la informacion
ResponderEliminargracias por tu trabajo amigo me ayudo mucho
ResponderEliminarmuy bueno excelente trabajo muchas gracias hermano
ResponderEliminar^ quero saber como se usa este oerador para
ResponderEliminarusarlo como operador de potencias.......3^4 81
que se lee 3 a la cuarta potencia
en javascrip..........
en java:
EliminarMath.pow(3, 4);
en java:
EliminarMath.pow(3, 4);
Muy buena, gracias
Eliminarmuy util
ResponderEliminarExcelente información (:
ResponderEliminarMuchisimas gracias. Me has animado a aprender java. Tal y como lo explicas parece sencillo.
ResponderEliminaraunque por lo que estoy viendo se complica exponencialmente.
Gracias a todos por los comentarios. Rosendo no temas, se complica un poco pero nada que no sea imposible de superar. Animo y a seguir aprendiendo Java!!!
ResponderEliminarMe has despejado las dudas, gracias.
ResponderEliminarPor que c toma el valor de 25. no he entendido esa parte??
ResponderEliminarPorque c = 20, a = 50 y b = 10
Eliminar(a>0 && a<=10)? ++a : a/b; se lee ¿a es un número entre 1 y 10? Si es cierto haga a+1, si es falso haga a/b
Al evaluar la expresión:
c+=(a>0 && a<=10)? ++a : a/b
20 = 20 + 5 = 25
al tener la "c" el operador "+" al lado "c+", se le sumara la evaluación que se ejecute a la izquierda. "a/b"=5, por lo tanto c=20, 20+5=25
Eliminarque grande eres. Gracias
EliminarGracias por la infomacion
ResponderEliminarDe nada, espero que te haya servido de ayuda y que sigas visitando el blog. Saludos
EliminarBueno info muchas Gracias
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarHola yo tengo uno duda con respecto a las operaciones aritmeticas, de donde sacan los valores de tipo char por ejemplo
ResponderEliminarc=80
c1+c2=164
c1+c2+5=169
c1+c2+'5'=217
i+c=126
i+c-b=78
etc
por favor si alguien me pudiera resolver mi duda se los agradeceria
De la tabla ASCII Es el valor numérico que corresponde a ese carácter.
EliminarOkey muchísimas gracias ahora todo esta mas claro
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarBuenas tardes me gustaría sabe cual es la logia de estas dos expresiones:
ResponderEliminarSystem.out.println(5&6); resultado 4
System.out.println((12&13) +"\n"); resultado 12
Gracias
Como exactamente sale esto?
ResponderEliminari = 5;
i++; // i vale ahora 6
++i; // i vale ahora 7
Hay una forma sencia para expresarlo?
o mejor esto:
ResponderEliminarint i = 1;
i++; // Esta instrucción incrementa en 1 la variable i.
// Es lo mismo que hacer i = i + 1; i toma el valor 2
Quiero agradecerte el esfuerzo de realizar estos tutoriales, me están siendo de gran utilidad para aprendr JAVA.
ResponderEliminarUn saludo
Que buen blog
ResponderEliminarsuper completo, gracias.
ResponderEliminarExcelente información.
ResponderEliminarMe alegro de que os sea útil. Gracias por los comentarios y por seguir el blog.
ResponderEliminarhola ,me puede explicar esto del %?
ResponderEliminara % b 1
v1 % v2 0.5
como puede salir este resultado ?
saludos