Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Los Operadores en JAVA
Los Operadores en JAVA
4. Operadores
Objetivos:
a) Describir los operadores (aritmticos, incrementales, de relacin, lgicos y de
asignacin) y los tipos de dato primitivos sobre los que actan
b) Evaluar expresiones que empleen datos primitivos, operadores y parntesis
c) Construir expresiones que empleen combinaciones de datos primitivos,
operadores y parntesis
Un operador lleva a cabo operaciones sobre uno (operador unario), dos (operador binario) o
tres (operador ternario) datos u operandos de tipo primitvo devolviendo un valor determinado
tambin de un tipo primitivo. El tipo de valor devuelto tras la evaluacin depende del operador y del
tipo de los operandos. Por ejemplo, los operadores aritmticos trabajan con operandos numricos,
llevan a cabo operaciones aritmticas bsicas y devuelven el valor numrico correspondiente. Los
operadores se pueden clasificar en distintos grupos segn se muestra en los siguientes apartados.
Operador
=
Descripcin
Operador asignacin
Ejemplo de
expresin
n = 4
Resultado del
ejemplo
n vale 4
No debe confundirse el operador asignacin (=) con el operador relacional de igualdad (==)
que se ver ms adelante. Adems Java dispone de otros operadores que combinan la asignacin con
otras operaciones (operadores aritmticos combinados).
En el siguiente cdigo se muestran algunos ejemplos de uso del operador asignacin con
datos de distintos tipos:
/**
* Demostracion del operador asignacion
* A. Garcia-Beltran - Abril, 2008
*/
public class opAsignacion {
public static void main(String[] args) {
int i,j;
double x;
char c;
boolean b;
String s;
i = 15;
j = i;
x = 12.345;
c = 'A';
b = false;
s = "Hola";
44
System.out.println("i
System.out.println("j
System.out.println("x
System.out.println("c
System.out.println("b
System.out.println("s
=
=
=
=
=
=
"
"
"
"
"
"
+
+
+
+
+
+
i);
j);
x);
c);
b);
s);
}
}
Operador
Descripcin
+
*
/
Ejemplo de
expresin
-4
2.5 + 7.1
235.6 - 103.5
1.2 * 1.1
0.050 / 0.2
7 / 2
20 % 7
Resultado del
ejemplo
-4
9.6
132.1
1.32
0.25
3
6
El resultado es de tipo long si, al menos, uno de los operandos es de tipo long y ninguno
es real (float o double).
El resultado es de tipo int si ninguno de los operandos es de tipo long y tampoco es real
(float o double).
El resultado es de tipo double si, al menos, uno de los operandos es de tipo double.
El resultado es de tipo float si, al menos, uno de los operandos es de tipo float y
ninguno es double.
El formato empleado para la representacin de datos enteros es el complemento a dos. En la
aritmtica entera no se producen nunca desbordamientos (overflow) aunque el resultado
sobrepase el intervalo de representacin (int o long).
45
La divisin entera se trunca hacia 0. La divisin o el resto de dividir por cero es una
operacin vlida que genera una excepcin ArithmeticException que puede dar lugar
a un error de ejecucin y la consiguiente interrupcin de la ejecucin del programa.
La aritmtica real (en coma flotante) puede desbordar al infinito (demasiado grande,
overflow) o hacia cero (demasiado pequeo, underflow).
El resultado de una expresin invlida, por ejemplo, dividir infinito por infinito, no genera
una excepcin ni un error de ejecucin: es un valor NaN (Not a Number).
En el siguiente programa se emplean todos los operadores aritmticos anteriores:
/**
* Demostracion de los operadores aritmeticos
* A. Garcia-Beltran - marzo, 2008
*/
public class OpAritmeticos {
public static void main(String[] args) {
int i,j;
double a,b;
i = 7;
j = 3;
System.out.println("* Operandos enteros:
System.out.println(" Operador suma:
System.out.println(" Operador resta:
System.out.println(" Operador producto:
System.out.println(" Operador division:
System.out.println(" Operador resto:
a = 12.5;
b = 4.3;
System.out.println("* Operandos reales:
System.out.println(" Operador suma:
System.out.println(" Operador resta:
System.out.println(" Operador producto:
System.out.println(" Operador division:
System.out.println(" Operador resto:
}
}
basicos
i
i
i
i
i
i
=
+
*
/
%
"
j
j
j
j
j
+
=
=
=
=
=
i
"
"
"
"
"
+
+
+
+
+
+
a
a
a
a
a
a
=
+
*
/
%
"
b
b
b
b
b
+
=
=
=
=
=
a
"
"
"
"
"
+
+
+
+
+
+
i
i
i
i
i
i
a
a
a
a
a
a
=
+
*
/
%
=
+
*
/
%
7 ; j = 3
j = 10
j = 4
j = 21
j = 2
j = 1
12.5 ; b = 4.3
b = 16.8
b = 8.2
b = 53.75
b = 2.906976744186047
b = 3.9000000000000004
46
Operador
++
--
Ejemplo de
expresin
4++
Incremento
a=5;
i++ primero se utiliza la variable y luego se
b=a++;
incrementa su valor
++i primero se incrementa el valor de la variable a=5;
b=++a;
y luego se utiliza
4-decremento
Descripcin
Estos operadores suelen sustituir a veces al operador asignacin y tambin suelen aparecer en
bucles for.
Ejemplo de programa que emplea operadores incrementales:
/**
* Demostracion de los operadores incrementales
* A. Garcia-Beltran - Abril, 2008
*/
class opIncrementales {
public static void main(String[] args) {
int i,j;
//
Variables enteras. Podrian ser reales o char
i = 7;
System.out.println("* Operando entero: i = " + i + ";");
System.out.println(" Operador ++:
j = i++; ");
j = i++;
System.out.println("
// i vale " + i + "; j vale "
i = 7;
System.out.println("
i = " + i + ";");
System.out.println("
j = ++i; ");
j = ++i;
System.out.println("
// i vale " + i + "; j vale "
i = 7;
System.out.println("* Operando entero: i = " + i + ";");
System.out.println(" Operador --:
j = i--; ");
j = i--;
System.out.println("
// i vale " + i + "; j vale "
i = 7;
System.out.println("
i = " + i + ";");
System.out.println("
j = --i; ");
j = --i;
System.out.println("
// i vale " + i + "; j vale "
}
}
* Operando entero:
Operador --:
i = 7;
j = i++;
// i vale 8; j vale 7
i = 7;
j = ++i;
// i vale 8; j vale 8
i = 7;
j = i--;
// i vale 6; j vale 7
i = 7;
+ j);
+ j);
+ j);
+ j);
47
j = --i;
// i vale 6; j vale 6
Operador
+=
-=
*=
/=
%=
Descripcin
Suma combinada
Resta combinada
Producto combinado
Divisin combinada
Resto combinado
Ejemplo de
expresin
a+=b
a-=b
a*=b
a/=b
a%=b
/**
* Demostracion de los operadores aritmeticos combinados
* A. Garcia-Beltran - marzo, 2008
*/
public class OpCombinados {
public static void main(String[] args) {
int i,j;
// Variables enteras. Podrian ser reales
i = 7;
j = 3;
System.out.println("* Operandos enteros:
i = "+ i
i += j;
System.out.println(" Suma combinada:
i += j "
i = 7;
i -= j;
System.out.println(" Resta combinada:
i -= j "
i = 7;
i *= j;
System.out.println(" Producto combinado: i *= j "
i = 7;
i /= j;
System.out.println(" Division combinada: i /= j "
i = 7;
i %= j;
System.out.println(" Resto combinada:
i %= j "
}
}
i = 7 ;
i += j
j = 3
// i vale 10
+" ;
j = "+ j);
+ "
+ "
+ "
+ "
+ "
48
Resta combinada:
Producto combinado:
Division combinada:
Resto combinada:
i
i
i
i
-=
*=
/=
%=
j
j
j
j
//
//
//
//
i
i
i
i
vale
vale
vale
vale
4
21
2
1
Operador
==
!=
<
>
<=
>=
Descripcin
igual que
distinto que
menor que
mayor que
menor o igual que
mayor o igual que
Ejemplo de expresin
7 == 38
'a' != 'k'
'G' < 'B'
'b' > 'a'
7.5 <= 7.38
38 >= 7
Todos los valores numricos que se comparan con NaN dan como resultado false excepto
el operador != que devuelve true. Esto ocurre incluso si ambos valores son NaN.
Ejemplo de programa que emplea operadores relacionales:
/**
* Demostracion de los operadores relacionales
* A. Garcia-Beltran - marzo, 2008
*/
public class OpRelacionales {
public static void main(String[] args) {
int i,j;
i = 7;
j = 3;
System.out.println("* Operandos enteros:
i
System.out.println(" Operador igualdad:
i
System.out.println(" Operador desigualdad:
i
System.out.println(" Operador mayor que:
i
System.out.println(" Operador menor que:
i
System.out.println(" Operador mayor o igual que: i
System.out.println(" Operador menor o igual que: i
}
}
= 7 ; j = 3
== j es false
!= j es true
> j es true
< j es false
>= j es true
<= j es false
= "+
== j
!= j
> j
< j
>= j
<= j
i +"
es "
es "
es "
es "
es "
es "
;
+
+
+
+
+
+
j = "+ j);
(i==j));
(i!=j));
(i>j));
(i<j));
(i>=j));
(i<=j));
49
Operador
Descripcin
&
||
&&
Ejemplo de
expresin
!false
!(5==5)
true | false
(5==5)|(5<4)
true ^ false
(5==5)|(5<4)
true & false
(5==5)&(5<4)
true || false
(5==5)||(5<4)
Resultado
del ejemplo
true
false
true
true
true
true
false
false
false
false
true
true
logicos");
: " + (! false));
: " + (! true));
: " + (false | false));
: " + (false | true));
: " + (true | false));
: " + (true | true));
: " + (false & false));
: " + (false & true));
: " + (true & false));
: " + (true & true));
50
logicos
: true
: false
: false
: true
: true
: true
: false
: false
: false
: true
Operador
:
Descripcin
operador condicional
Ejemplo de expresin
a = 4;
b = a == 4 ? a+5 : 6-a;
b = a > 4 ? a*7 : a+8;
La sentencia de asignacin:
valor = (expresionLogica ? expresion_1 : expresion_2);
Resultado del
ejemplo
b vale 9
b vale 12
51
System.out.println("k = "
i = 2;
j = 1;
k = i > j ? 2*i : 3*j+1;
System.out.println("i = "
System.out.println("j = "
System.out.println("k = "
+ k);
+ i);
+ j);
+ k);
}
}
=
=
=
=
=
=
1
2
7
2
1
4
Operador
Descripcin
~
|
^
&
<<
>>
Ejemplo
de
expresin
Resultado del
ejemplo
~12
12|10
12^10
12&10
7<<2
-7<<2
-13
8
6
14
28
-28
7>>2
-7>>2
1
-2
7>>>2
-7>>>2
1
1073741822
>>>
i = " + i + " ;
j = " + j);
52
System.out.println("
System.out.println("
System.out.println("
System.out.println("
i = 12;
j = -10;
System.out.println("*
System.out.println("
System.out.println("
System.out.println("
System.out.println("
i = 7;
j = 2;
System.out.println("*
System.out.println("
System.out.println("
System.out.println("
i = -7;
j = 2;
System.out.println("*
System.out.println("
System.out.println("
System.out.println("
}
Negacion o complemento:
Suma logica (binaria):
Suma exclusiva (binaria):
Producto logico (binaria):
~i es
i & j
i ^ j
i | j
" + (~i));
es " + (i&j));
es " + (i^j));
es " + (i|j));
Operandos enteros:
i = " + i + " ; j = " + j);
Negacion o complemento:
~i es " + (~i));
Suma logica (binaria):
i & j es " + (i&j));
Suma exclusiva (binaria):
i ^ j es " + (i^j));
Producto logico (binaria):
i | j es " + (i|j));
Operandos enteros:
i = " + i + " ;
Despl. a izquierdas:
i << j es " +
Despl. a derechas:
i >> j es " +
Despl. a derechas sin signo: i >>> j es "
j = " + j);
(i<<j));
(i>>j));
+ (i>>>j));
Operandos enteros:
i = " + i + " ; j = " + j);
Desplazamiento a izquierdas: i << j es " + (i<<j));
Despl. a derechas:
i >> j es "+ (i>>j));
Despl. a derechas sin signo: i >>> j es " + (i>>>j));
i = 12 ; j = 10
~i es -13
i & j es 8
i ^ j es 6
i | j es 14
i = 12 ; j = -10
~i es -13
i & j es 4
i ^ j es -6
i | j es -2
i = 7 ; j = 2
i << j es 28
i >> j es 1
i >>> j es 1
i = -7 ; j = 2
i << j es -28
i >> j es -2
i >>> j es 1073741822
Operador
+
Descripcin
Operador concatenacin
Ejemplo de expresin
Hola + Juan
Resultado del
ejemplo
HolaJuan
53
4.10. Separadores
Existen algunos caracteres que tienen un significado especial en el lenguaje Java. En la Tabla
4.10 se resumen los diferentes separadores que pueden encontrarse en el cdigo fuente de un
programa.
Tabla 4.10 Separadores en Java
Separador
Descripcin
()
Permiten modificar la prioridad de una expresin, contener expresiones para el
control de flujo y realizar conversiones de tipo. Por otro lado pueden contener la
lista de parmetros o argumentos, tanto en la definicin de un mtodo como en la
llamada al mismo.
{}
Permiten definir bloques de cdigo y mbitos y contener los valores iniciales de
las variables array
[]
Permiten declarar variables de tipo array (vectores o matrices) y referenciar sus
elementos
;
Permite separar sentencias
,
Permite separar identificadores consecutivos en la declaracin de variables y en
las listas de parmetros. Tambin se emplea para encadenar sentencias dentro de
un bucle for
.
Permite separar el nombre de un atributo o mtodo de su instancia de
referencia. Tambin separa el identificador de un paquete de los de los
subpaquetes y clases
4.11. Expresiones
Una expresin es una combinacin de operadores y operandos que se evala generndose un
nico resultado de un tipo determinado.
54
Prior.
Operador
++
-+, ~
2
3
4
(tipo)
*, /, %
+, +
<<
>>
>>>
8
9
10
11
12
13
14
<, <=
>, >=
instanceof
==
=
==
=
&
&
^
^
|
|
&&
||
? :
=
*=, /=, %=
+=, -=
<<=, >>=
>>>=
&=, ^=, |=
Tipo de
operador
Aritmtico
Aritmtico
Aritmtico
Integral
Booleano
Cualquiera
Aritmtico
Aritmtico
Cadena
Integral
Integral
Integral
Aritmtico
Aritmtico
Objeto, tipo
Primitivo
Primitivo
Objeto
Objeto
Integral
Booleano
Integral
Booleano
Integral
Booleano
Booleano
Booleano
Booleano,
cualquiera,
cualquiera
Variable,
cualquiera
Operacin
Incremento previo o posterior (unario)
Incremento previo o posterior (unario)
Suma unaria, Resta unaria
Cambio de bits (unario)
Negacin (unario)
Multiplicacin, divisin, resto
Suma, resta
Concatenacin de cadenas
Desplazamiento de bits a izquierda
Desplazamiento de bits a derecha con inclusin de signo
Desplazamiento de bits a derecha con inclusin de cero
Menor que, Menor o igual que
Mayor que, Mayor o igual que
Comparacin de tipos
Igual (valores idnticos)
Desigual (valores diferentes)
Igual (referencia al mismo objeto)
Desigual (referencia a distintos objetos)
Cambio de bits AND
Producto booleano
Cambio de bits XOR
Suma exclusiva booleana
Cambio de bits OR
Suma booleana
AND condicional
OR condicional
Operador condicional (ternario)
Asignacin
Asignacin con operacin