Beruflich Dokumente
Kultur Dokumente
TEMA 2
Estructuras bsicas en Java
Comentarios
/************************************************
* Esta aplicacin visualiza Hola desde Java!
* Autor: Jess Cceres
* Importaciones: ninguna
*Parmetros: argumentos de la lnea de comandos
* Retorno: ninguno
* Fecha de creacin: 1/1/05
* ltima actualizacin: 1/10/06
***********************************************/
Tipos de datos
Enteros
Almacenan como su propio nombre indica nmeros enteros, sin parte decimal. Por
razones de portabilidad todos los datos en Java tienen el mismo tamao y formato.
En Java hay cuatro tipos de enteros:
Int 4 -2147483648 al
2147483647
Short 2 -32768 al
32767
Long 8 -9223372036854775808 al
9223372036854775807
Byte 1 -128 al
127
Para indicar que una constante es de tipo long lo indicaremos con una L: 23L
Reales
Float 4 +3.40282347E+38
Double 8 +179769313486231570E+308
Para indicar que una constante es flotante: ej. 2.3 se ha de escribir: 2.3F, por
defecto ser double.
Carcter
En Java hay un nico tipo de carcter: char. Cada carcter est codificado en
formato Unicode, en este formato cada carcter ocupa 2 bytes, frente a la
codificacin ASCII, donde cada carcter ocupa un solo byte, dando cabida a 256
smbolos distintos. Con esa cantidad de caracteres no se puede soportar algunos
alfabetos como el chino, japons o ruso, para lo cual se cre el formato Unicode.
Al igual que en C se distingue entre la representacin de los datos char y los de
cadenas de caracteres. Los primeros, los char, van entre comillas simples: char
ch=a; mientras que las cadenas de caracteres usan comillas dobles.
Boolean
Es un tipo de datos que nicamente puede tomar dos valores: true o false. Se
utiliza para realizar chequeos sobre condiciones
Las Variables
En Java, al igual que en C, es obligatorio declarar los tipos de todas las variables
empleadas. La sintaxis de declaracin es la siguiente:
int i,j,k;
Cuando se asigna un tipo de datos a una variable de otro tipo, Java convertir el
dato al nuevo tipo de variable de forma automtica siempre que se cumplan las
siguientes condiciones:
double << float << long <<int << short << byte
Ejemplo 2.2: Ejemplo de utilizacin del cast para cambio de tipos de datos.
Operadores
//El siguiente mtodo nos ahorrar teclear e invocndolo a la impresin por pantalla
static void prt(String s) {
System.out.println(s);
}
}
Exponenciacin
Math.metodo(argumentos);
Operadores Lgicos
! Not lgico
== Test de igualdad
!= Test de desigualdad
|| Or lgico
prt((i < 10) && (j<10) es + ((i < 10) && (j<10)) );
prt((i < 10) || (j<10) es + ((i < 10) || (j<10)) );
}
Cadenas de Caracteres
En Java no hay ningn tipo predefinido para cadena de caracteres, al igual que en
C++, en su lugar hay una clase, llamada String, que es la que soporta todas las
operaciones con las cadenas de caracteres.
Su definicin es la siguiente:
Concatenacin
Ejemplo:
Subcadenas
Uno de los mtodos que posee la clase String permite la extraccin de una
subcadena de caracteres de otra ya existente. Su sintaxis es la siguiente:
Ejemplo:
Comparacin de Cadenas
cadena1.equa ls(cadena2);
Este mtodo devuelve true si son iguales y false si no lo son. Otro mtodo, si cabe,
ms utilizado y til es el siguiente:
prt(subcadena : + saludo.substring(0,2));
String s=pato;
int longitud = s.length();
System.out.println(longitud);
int indexOf(String str, int indice) : Devuelve el ndice en el que aparece por
primera vez la cadena str. Recordar que un String est indexado, si el ndice a
partir del que se inicia la bsqueda no existe o la cadena str no aparece, se
devuelve -1. Es un mtodo muy usado.
String str=expedicin;
System.out.println(str.indexOf(x, str.length())); //devolver -1
int indexOf(char ch): devuelve el ndice en el que aparece por primera vez el
carcter que se le pasa como parmetro. Si no se encuentra se devuelve -1.
Mtodo sobrecargado.
String s=pato;
String s1 = s.replace(o,a);
System.out.println(s1);
String trim(): Devuelve una cadena sin espacios en blanco al principio y al final.
No elimina los espacios en blanco situados entre las palabras.
String str=cocodrilo;
System.out.println(str.substring(2,7));
La clase StringBuffer
En Java las cadenas se tratan de forma diferente a C/C++, donde las cadenas son
matrices de caracteres en las que se indica el final de la cadena con un carcter de
valor \0. En Java las cadenas son objetos de las clases predefinida String o
StringBuffer, que estn incluidas en el paquete java.lang.*.
Entre los mtodos que posee destacan la cantidad de mtodos sobrecargados que
posee el mtodo append el cual permite aadir un carcter o conjunto de ellos al
StringBuffer creado. Veamos un ejemplo de la utilizacin de alguno de sus
mtodos:
Matrices Arrays
En Java los arrays son objetos. Como tales se deben crear mediante el comando
new. La sintaxis de la definicin de una array es la siguiente:
Ejemplo:
char arrayCaracteres[];
arrayCaracteres = new char[10];
Los arrays se enumeran desde el elemento cero, que sera el primer elemento,
hasta el tamao-1, que sera el ltimo elemento. Es decir, si tenemos un array de
diez elementos, el primer elemento sera el que ocupe la posicin cero y el ltimo el
que ocupe la posicin nueve.
char x = arrayCaracteres[2];
Aunque el objeto Array no existe como tal, posee una variable, .length, que
devuelve el nmero de elementos que posee el array. Es una variable de solo
lectura por lo que no se pueden realizar asignaciones a esta variable.
Se pueden declarar arrays de varios subndices, pudiendo tener arrays de dos, tres,
cuatro niveles, si bien es a partir del tercer nivel cuando se pierde la perspectiva
geomtrica.
o bien:
Tipo_datos nombre_array[][];
nombre_array = new Tipo_datos[tamao1][tamao2];
int matriz[][];
matriz = new int[2][2];
Ejemplo:
Una vez definida en el cdigo una variable, sta dejar de existir cuando se acabe
el bloque donde ha sido definida. Los bloques en Java empiezan por { y finalizan
con }.
Veamos un ejemplo:
{
int x = 12
{
int q = 96;
/* disponible x y q */
}
{
int x = 12
{
int x = 96;
Control de Flujo
Sentencias Condicionales
If then Else
if (condicin) if (condicin) {
{ Grupo de sentencias 1}
Grupo de sentencias else {
} Grupo de sentencias 2}
if (condicin) {
Grupo de sentencias 1}
else if (condicion2) {
Grupo de sentencias 2}
else if (condicion3) {
Grupo de sentencias 3}
.
.
.
else {
Grupo de sentencias n}
Switch
Se podra decir que es una estructura comparativa mltiple ya que compara el valor
de una variable con una serie de valores.
Estos valores nicamente podrn ser char o cualquier otro tipo de valor entero
exceptuando long. No se puede comparar con reales ni con cadenas de caracteres,
etc. Esta es una limitacin muy criticada en esta estructura ya que no ha
evolucionado desde C++.
switch(variable) {
Estructuras de Iteracin
Bucle While
while (condicin) {
Grupo de sentencias 1;
}
while (r<0.99d) {
r = Math.random();
System.out.println(r);
}
}
}
Bucle do while
do{
Grupo de sentencias 1;
}while(condicin)
do{
r = Math.random();
System.out.println(r);
} while (r<0.99d)
}
}
Bucle for
Su sintaxis es la siguiente:
for(expresin1;expresin2;expresin3){
Grupo de sentencias;
donde:
Break
Veamos un ejemplo:
Continue
Return
Sus funciones son las mismas que en C++. Cuando se llama a un procedimiento
(en POO se llamar mtodo) la sentencia return devolver el valor especificado al
cdigo que hizo la llamada a ese mtodo. Se puede decir que termina el control de
flujo de un mtodo para devolverlo al cdigo que realiz la llamada.
Laboratorio
A continuacin se presentan una serie de ejemplos que hacen uso de los tpicos
cubiertos en este captulo; declaracin y asignacin de variables, arreglos,
operadores, condicionales y bucles. Codifique y ejecute los siguientes ejemplos a fin
de conocer un poco ms acerca del comportamiento de los elementos y estructuras
bsicas que conforman a Java.
Condicionales
Bucles
El siguiente programa hace uso del bucle for y del condicional switch para
contar el nmero de lneas, palabras y caracteres de una cadena de texto dada.
for(int i=0;i<longitud;i++)
{
char c = text.charAt(i);
numCar++;
switch(c) {
case \n:
numLin++; // Continua
case \t: //Continua
case :
if(enPalabra)
{
numPal++;
enPalabra = false;
}
default:
enPalabra = true;
}
}
System.out.println(\t + numLin + \t + numPal + \t + numCar) ;
}
}
Matrices
El prximo ejemplo crea una matriz de cinco por cinco doubles, que se inicializa
con los valores de la diagonal (i=j) a 1.0, dejando todos los otros elementos de la
matriz a cero.
}
}
Observar que no se necesita inicializar los valores que se desea ajustar a cero. Java
establece a cero o a valores nulos todas las variables que no se asignen.
Ejercicios
Su longitud
El carcter asociado al ndice 7
La subcadena "ganadero "
El ndice que ocupa el carcter 'x'
La cadena transformada en maysculas
Por ltimo, comprobar si el primer carcter de la String es 'E' y
mostrar por consola un mensaje que lo indique.