Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Pgina 1
TIPOS
DE
DATOS
EN
JAVA
NOMBRE
TIPO
OCUPA
RANGO
APROXIMADO
Byte
Entero
1 byte
-128 a 127
Short
Entero
2 bytes
-32768 a 32767
Int
Entero
4 bytes
2*109
Entero
8 bytes
Muy grande
Decimal
simple
4 bytes
Muy grande
Decimal
doble
8 bytes
Muy grande
Char
Carcter
simple
2 bytes
---
Boolean
Valor true
1 byte
o false
TIPOS
Long
PRIMITIVOS
(sin mtodos; no Float
son objetos; no
necesitan
una
invocacin para Doubl
ser creados)
---
Pgina 2
Tipos
de
la String (cadenas de texto)
biblioteca estndar Muchos otros (p.ej. Scanner, TreeSet,
de Java
ArrayList)
Tipos definidos por
Cualquiera que se nos ocurra, por ejemplo
el programador /
Taxi, Autobus, Tranvia
usuario
Arrays
TIPOS OBJETO
(con
mtodos,
necesitan
una
invocacin para
ser creados)
Tipos envoltorio o
wrapper
(Equivalentes a los
tipos
primitivos
pero
como
objetos.)
Integer
Long
Float
Double
Character
Boolean
Pgina 3
Declaracin
identificador
Tipo
int i;
Entero
String s;
referencia a string
int a[];
int[] b;
referencias a Objetos
Strings
char, boolean
Arreglos
float, double
otros objetos
Pgina 4
Bits
Rango
Ejemplos
int
32
-2**31 .. 2**31-1
0, 1, 5, -120, ...
short
16
-2**15 .. 2**15-1
0, 1, 5, -120, ...
byte
-2**7 .. 2**7-1
0, 1, 5, -120, ...
long
64
-2**63 .. 2**63-1
0, 1, 5, -120, ...
boolean
n/a
false, true
Pgina 5
char
16
n/a
float
32
IEEE
1.2
double
64
IEEE
1.2
Expresiones
En Java cada expresin tiene un tipo que se determina durante la compilacin, es decir es
independiente del valor durante la ejecucin. Una expresin puede ser:
Java tiene prcticamente los mismos operadores de C y C++. Cada operador acepta
una, dos o tres expresiones de diversos tipos. A veces un operador no est definido para
argumentos de ciertos tipos. Por ejemplo la resta entre strings no est definida. Pero la suma
de strings est definida como la concatenacin. A continuacin veremos los operadores ms
frecuentes en Java.
Operadores binarios entre expresiones numricas
Smbolo
Operacin
Suma
Resta
Multiplicacin
Divisin
Resto
Pgina 6
Dominio
Rango
int*int
int
long*long
long
float*float
float
double*double
double
Ejemplos:
int a=1, b=2;
int c= a + b;
short s= 1;
int d= s + c; // s se convierte a int
float f= 1.0 + a; // a se convierte a float
Operadores unarios sobre expresiones numricas
Smbolo
Operacin
Argumento
+ exp
nada
- exp
cambio de signo
Operacin
Argumento
++ var
preincremento
-- var
predecremento
var ++
postincremento
var --
postdecremento
Pgina 7
Operacin
>
mayor
<
menor
>=
mayor igual
<=
menor igual
==
igual
!=
distinto
Rango
int*int
boolean
long*long
boolean
float*float
boolean
double*double
boolean
Significado
y-lgico
exp || exp
o-lgico
! exp
negacin
Pgina 8
Ejemplos:
int i= 1;
short s= 2;
int j= i+s;
s= a; // error short < int
s= (short)a; // Ok
i= 1.0; // error int < double
i= (int)1.0; // Ok
f= 1.0; // error float < double
f= (float)1.0; // Ok
f= 1.0f; // Ok
boolean v=(boolean)a; // error no existe conversin
Precedencia de Operadores
. () []
unarios: - + (cast)
*/%
+< > <= >= == !=
!
||
&&
2.4 Operadores.
Conocemos todos los operadores utilizados en el lenguaje Java.
Los operadores son muy similares a los de C++, ya lo advertimos en su momento.
Operadores Aritmticos: Los habituales:
Suma +.
Resta - .
Multiplicacin *.
Divisin /.
Pgina 9
Resto de la Divisin %.
Operadores Unarios: El mas (+) y el menos (-). Para cambiar el signo del operando.
Operador Instanceof: Nos permite saber si un objeto pertenece a una clase o no.
'++'
'--'
'==': Iguales
'=': Distintos
Operadores que actan a nivel de bits: Son mucho menos utilizados por eso los explicamos
ms por encima.
Pgina 10
Pgina 11
Pgina 12
String apellido1,apellido2;
System.out.print("Ingrese primer apellido:");
apellido1=teclado.next();
System.out.print("Ingrese segundo apellido:");
apellido2=teclado.next();
if (apellido1.equals(apellido2)) {
System.out.print("Los apellidos son iguales");
} else {
System.out.print("Los apellidos son distintos");
}
}
}
Para comparar si el contenido de dos String son iguales no podemos utilizar el operador ==.
Debemos utilizar un mtodo de la clase String llamado equals y pasar como parmetro el String
con el que queremos compararlo:
if (apellido1.equals(apellido2)) {
El mtodo equals retorna verdadero si los contenidos de los dos String son exactamente
iguales, esto hace que se ejecute el bloque del verdadero.
Recordemos que hemos utilizado el mtodo next() para la carga de los String, luego esto hace
que no podamos ingresar un apellido con espacios en blanco (podemos probar que si
ingresamos por ejemplo "Rodriguez Rodriguez" en el primer apellido, luego se carga la cadena
"Rodriguez" en la variable apellido1 y "Rodriguez" en la variable apellido2 (con esto hacemos
notar que cada vez que ingresamos un espacio en blanco cuando utilizamos el mtodo next()
los caracteres que siguen al espacio en blanco son recuperados en la siguiente llamada al
mtodo next())
El mtodo equals retorna verdadero si los contenidos de los dos String son
exactamente iguales, es decir si cargamos "Martinez" en apellido1 y "martinez" en apellido2
luego el mtodo equals retorna falso ya que no es lo mismo la "M" mayscula y la "m"
minscula.
En el caso que necesitemos considerar igual caracteres maysculas y minsculas
podemos utilizar el mtodo equalsIgnoreCase:
if (apellido1.equalsIgnoreCase(apellido2)) {
System.out.print("Los apellidos son iguales sin tener en cuenta maysculas y
minsculas");
} else {
System.out.print("Los apellidos son distintos sin tener en cuenta maysculas y
minsculas");
}
Pgina 13
Sintaxis:
int[] matriz={100,200,302,400}
Como podrn concluir, en la primera declaras el array nada ms, dicindole la cantidad de
memoria secuencial que se debe reservar, en el segundo ejemplo se inicializa el array dndole
los valores que va a contener (obviamente la cantidad de memoria secuencial reservada ser
igual a la cantidad de elementos insertados).
Al momento de inicializar una matriz de la manera :
cada posicin de la matriz ser inicializada con el valor predeterminado del tipo de variable. Por
ejemplo si la matriz es de tipo boolean, todas las posiciones de la matriz sern inicializadas con
el valor false (ya que este es valor predeterminado de este tipo de dato), por el contrario si la
matriz fuese de un tipo no primitivo, el valor que contendr cada casilla ser null.
A continuacin tienes una lista de los valores predeterminados de cada tipo de dato:
Tipo de Dato-->Valor
byte-->0
short-->0
int-->0
long-->0
float-->0.0
double-->0.0
char-->/u0000
boolean-->false
Object (Cualquier tipo de Objeto)-->null
Para obtener el tamao de un array de manera dinmica se utiliza la propiedad .length.
Esta propiedad es comn para todos los arrays. Tambin es importante saber que las matrices
Pgina 14
se empiezan a enumerar desde el nmero cero (0), por tanto para acceder al valor almacenado
en la ltima posicin debers colocar el tamao de la matriz menos 1 unidad.
Al momento de tratar de acceder a una posicin fuera del rango de la matriz se lanzar
un excepcin de tipo java.lang.ArrayIndexOutOfBoundsException (esta excepcin es una
excepcin no chequeada, por lo que no es necesario colocar un bloque try/catch en el cdigo)
Pasaremos con un ejemplo:
public class Arrays01 {
public static void main(String args[]) {
int ita_nro[] = new int[4];
for (int it_cont = 0; it_cont < 4; it_cont++){
ita_nro[it_cont] = it_cont * 2;
System.out.println(ita_nro[it_cont]);
}
}
}
Pgina 15
Pgina 16
Pgina 17
System.out.println("*****");
}
}
Bsicamente este programa cumple con el objetivo. Pero... No notan que algo anda
mal? Se repiti cinco veces una instruccin. Qu ocurrira sin nos solicitaran una figura ms
grande? Tendramos que agregar ms lneas de cdigo. Y si en vez de una figura, se les
ocurra pedirnos que listramos una lista de nmeros del uno al milln, el cdigo sera inmenso.
Tambin imagnense lo que tardaramos en escribirlo.
Sin embargo tenemos un recurso para acudir en cuanto surjan estos problemas. Son
las estructuras de iteracin. Una iteracin consiste en una repeticin de un bloque de
sentencias un nmero determinado de veces o hasta que se cumpla una condicin.
De esta forma el cdigo puede simplificarse notablemente. Antes de entrar en los
detalles de la implementacin con Java, veremos cmo podemos realizar algunas rutinas en
pseudocdigo:
Repetir 5 veces:
Imprimir ("*****");
Le pasamos al intrprete la tarea de reiterar una accin. Nosotros solamente escribimos una
vez lo que hay que hacer.
Siguiendo con una segunda aproximacin, podramos agregarle un registro que cuente el
nmero de iteraciones. Adems adicionamos una condicin para que indicar que el registro no
debe pasar de cierto nmero. De esta manera, el pseudocdigo quedar as:
N = 1;
Mientras que N <= 5
Imprimir ("*****");
N = N + 1;
Lo que hicimos fue inicializar el contador, agregar una condicin de corte, indicar que sentencia
se debe repetir y finalmente incrementamos el contador. La condicin es una expresin lgica
que debe tener un valor de verdadero o falso. En la ejecucin, cada vez que termina la ltima
sentencia vuelve a evaluar la condicin, si se cumple sigue la iteracin, de lo contrario termina.
Esta es una estructura de iteracin til para los casos en donde sabemos a priori cuantas
repeticiones se deben ejecutar. Con pocos retoques se pueden realizar iteraciones
desconociendo el nmero de ciclos.
Pgina 18
Realicemos un programa que transforme un nmero decimal en binario. En la vida real, para
hacer esto, realizamos sucesivas divisiones por 2 al nmero decimal. A cada divisin tomamos
el resto y continuamos hasta que el resultado sea cero.
Por ejemplo: Tenemos que pasar el nmero 25 a binario
El resultado es 11001
En general, no sabemos cuantas divisiones tendremos que realizar. Pero si sabemos que
debemos llegar a cero con la divisin. Las tareas que repetimos son las de tomar el resto y el
resultado de la divisin. Con estos datos en mente, podremos realizar un algoritmo.
DECIMAL = 25;
Mientras que DECIMAL > 0 :
BINARIO = DECIMAL % 2 + BINARIO;
DECIMAL = DECIMAL / 2;
La sentencia if-else
Pgina 19
La sentencia switch-case
La sentencia switch se utiliza para realizar sentencias condicionalmente basadas en alguna
expresin. Por ejemplo, un programa contiene un entero llamado mes cuyo valor indica el mes
en alguna fecha, y se quiere mostrar el nombre del mes basndose en su nmero entero
equivalente. Se podra utilizar la sentencia switch de Java para realizar esta tarea.
int mes;
...
switch (mes) {
case 1: System.out.println("Enero"); break;
case 2: System.out.println("Febrero"); break;
case 3: System.out.println("Marzo"); break;
case 4: System.out.println("Abril"); break;
case 5: System.out.println("May0"); break;
case 6: System.out.println("Junio"); break;
case 7: System.out.println("Julio"); break;
Pgina 20
El bucle while
Una sentencia while realiza una accin mientras se cumpla una cierta condicin. La sintaxis
general de la sentencia while es.
while (expresin)
sentencia;
Esto es, mientras la expresin sea verdadera, ejecutar la sentencia.
sentencia puede ser una sla sentencia o puede ser un bloque de sentencias. Un bloque de
sentencias es un juego de sentencias legales de java contenidas dentro de corchetes({y }).
Adems de while Java tiene otros dos constructores de bucles que puedes utilizar en tus
programas.
El bucle for
Puedes utilizar este bucle cuando conozcas los lmites del bucle (su instruccin de
inicializacin, su criterio de terminacin y su instruccin de incremento). Por ejemplo, el bucle
for se utiliza frecuentemente para iterar sobre los elementos de un array, o los caracteres de
una cadena.
// a es un array de cualquier tipo
...
int i;
int length = a.length;
for (i = 0; i < a.length; i++) {
Pgina 21
el bucle do-while
Java proporciona otro bucle, el bucle do-while,que es similar al bucle while que se vi al
principio, excepto en que la expresin se aval al final del bucle.
do {
sentencias
} while (Expresin Booleana);
La sentencia do-while se usa muy poco en la construccin de bucles pero tiene sus usos. Por
ejemplo, es conveniente utilizar la sentencia do-while cuando el bucle debe ejecutarse al
menos una vez.
Ejercicios de Ejemplo
El lenguaje Java tiene varias estructuras de control para bucles y bifurcaciones condicionales.
El famoso Hola Mundo e ingreso de datos a travs del programa en ejecucin:
//Famoso programa en JAVA
//Importamos lo necesario
import java.util.Scanner;
public class tst1 {
//Mtodo principal
public static void main(String[] args) {
//El famoso Hola MUNDO!
System.out.println("Hola MUNDO");
//Declaramos variables
int suma,b;
int a=5;
Pgina 22
Pgina 23
Pgina 24
Pgina 25