Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 5 Cadenas Arrays
Tema 5 Cadenas Arrays
Java
Arrays y Cadenas
Java
Arrays y Cadenas
Strings
La clase java.lang.String implementa cadenas Las cadenas son objetos constantes e inmutables
Su tamao es constante Cambiar una cadena significa construir una nueva
Java
Arrays y Cadenas
String
Se puede:
String s = Hola;
Es equivalente a:
Java
Arrays y Cadenas
Cadenas
Creacin de cadenas
String saludo = hola; // creacin de una cadena
asignando un literal
String cadena = new String(); // creacin de una cadena vaca Diversos constructores
String( String cadena ); String( char array[] ); String( char array[],int desplazamiento,int cuenta );
Java
Arrays y Cadenas
Java
Arrays y Cadenas
Java
Arrays y Cadenas
Java
Arrays y Cadenas
Java
Arrays y Cadenas
10
Java
Arrays y Cadenas
11
Java
Arrays y Cadenas
12
Java
Arrays y Cadenas
13
Comparacin de cadenas
Con equals() se sabe si dos cadenas son iguales
Con == se comparan referencias Se diferencia entre maysculas y minsculas
Con equalsIgnoreCase() no se diferencia entre maysculas y minsculas Con compareTo() se obtiene <0, 0, >0 segn el argumento sea menor, igual o mayor que la cadena Con toLowerCase() y con toUpperCase() se convierte una cadena a minculas o maysculas respectivamente
Java Arrays y Cadenas 14
Cuando se concatenan cadenas se realiza copia de los operandos Una cadena se puede concatenar con cualquier otro valor de otro tipo de datos
Tiene otros muchos mtodos de utilidad => consultar en laJava API de Java Arrays y Cadenas
15
El mtodo toString()
Sirve para convertir un objeto en un String. Sirve para convertir un tipo bsico a String. La clase Object define un mtodo toString(), por defecto, que retorna el nombre de la clase y la direccin de su puntero. Normalmente no es muy til por lo que suele estar sobrescrita. Date hoy = new Date (); .... System.out.println(hoy.toString());
Java Arrays y Cadenas 16
Mtodo toString
Conversin directa de un tipo bsico en cadena
Llamada a toString() para cualquier otro objeto
Java
Arrays y Cadenas
17
Mtodo toString
public class class Punto Punto { { public int x; x; int y; y; int int public Punto(int Punto(int x, x, int int y) y) { { public this.x = = x; x; this.y this.y = = y; y; this.x } } public String String toString() toString() { { public Punto[ + +x x+ + , , + +y y +]; +]; return Punto[ return } } public static static void void main(String main(String args[]) args[]) { { public Punto punto punto = = new new Punto(2,3); Punto(2,3); Punto System.out.println( "visualizar "visualizar datos datos System.out.println( del punto+ punto+ punto punto );}} );}} del
Java Arrays y Cadenas 18
Ejercicio 1
Ejecutar el mtodo toString() heredado de Object en la clase Rectngulo
Java
Arrays y Cadenas
19
Ejercicio
Re escribir el mtodo toString() de Rectangulo
Java
Arrays y Cadenas
20
Conversin de Cadenas
Integer(String s); //String a Integer Integer(int i); //primitivo a Integer Integer.valueOf("4"); //String a Integer int i = 4; Integer objInt = new Integer(i); int j = objInt.intValue(); //Integer a primitivo String s = objInt.toString(); //Integer a String int k =Integer.parseInt("4");//String a primitivo
Java
Arrays y Cadenas
21
Clases envolvente
Permiten representar tipos bsicos de datos, como objetos.
Tipo de dato bsico boolean byte char short int long float double
Java
Clase e nvolve nte Boolean Byte Character Short Integer Long Float Double Arrays y Cadenas
22
Clases envolvente
Cada tipo primitivo Java tiene su correspondiente envolvente (wapper class) en le paquete java.lang. Cada objeto de la clase envolvente encapsula un valor primitivo simple. El objeto de clase envolvente se construye pasando el valor al constructor apropiado. Por ejemplo: int pInt = 500; Integer wInt = new Integer(pInt);
Java Arrays y Cadenas 23
Clases envolvente
Integer i = new Integer(7) Integer
intValue()
longValue()
doubleValue()
floatValue()
Java Arrays y Cadenas 24
Conversiones int/Integer/String
Integer(String s); //String a Integer Integer(int i); //primitive a Integer Integer.valueOf("4"); //String a Integer int i = 4; Integer objInt = new Integer(i);
int j = objInt.intValue(); //Integer a primitive String s = objInt.toString(); //Integer a String int k = Integer.parseInt("4"); //String a //primitive
Java
Arrays y Cadenas
25
Arrays
Coleccin de variables todas del mismo tipo
Tamao fijo Pueden ser variables simples o referencias a objetos
// vector es un array de enteros // igual que la declaracin anterior // ERROR: no se especifica el tamao
Arrays y Cadenas
26
Arrays
int iArray[] = new int[3]; // array of 3 ints
iArray
Java
Arrays y Cadenas
27
Arrays
Definicin: reserva de la memoria para el array
Antes de usarse, un array tiene que crearse (con new):
int vector[] = new int[10]; vector[0]..vector[9] // array de 10 enteros:
En este momento se especifica el tamao del array (que no forma parte del tipo de datos)
Java Arrays y Cadenas 28
Arrays
Empleado[ ] empArray = new Empleado[5];
empArray
null
null
Java
Arrays y Cadenas
29
Java
Arrays y Cadenas
30
arrayCadenas
null
Java
Arrays y Cadenas
31
Java
9 Arrays y Cadenas
32
Arrays
Tamao de un array: miembro length int[] a=new int[100];
a.length // correcto a.length() // ERROR: no se usan parntesis for (int i = 0; i < a.length; i++) a[i]=i;
Arrays
Se puede especificar una lista de inicializacin int[] arrayNumeros = { 147, 323, 89 }; No se utiliza el operador new y no se especifica el tamao Es equivalente a:
Java
Arrays y Cadenas
34
Arrays multidimensionales
Array de arrays
Declaracin, definicin e inicializacin
int[][] array; // creacin de la referencia array = new int[2]; // array con dos filas for (int i = 0; i < array.length; i++) array[i] = new int[5]; // cada fila puede tener distinto tamao
Se permiten declaraciones parciales en las que al final pueden existir dimensiones sin especificar
int[][] arrayPar = new int[3][];
Java Arrays y Cadenas 35
Arrays multidimensionales
Inicializacin mediante listas
int[][] array = { {79, 87, 94, 82, 67}, {98, 87, 81, 74, 91} };
array
79 87 94 82 67
0,0 0,1 0,2 0,3 0,4
98 87 81 74 91
1,0 1,1 1,2 1,3 1,4
Java
Arrays y Cadenas
36
Arrays multidimensionales
Una vez que se reserva el espacio de memoria el tamao de un array no puede cambiar
String[] miArray = new String[20]; miArray = new String[10]; // correcto se pierde la referencia al array anterior y se crea otro miArray.length = 30; // ERROR - no permitido
Java
Arrays y Cadenas
37
Arrays
Lmites de los arrays
Todos los vectores empiezan por 0. El nmero de elementos del vector se almacena en el atributo length del propio vector.
Un array no se puede redimensionar Se puede utilizar la misma variable referencia para apuntar a otro vector diferente: int elements [ ] = new int [6]; elements = new int [10];
Java Arrays y Cadenas 38
Argumentos de entrada
Se pueden recoger argumentos de entrada en un array de Strings llamado args En Eclipse se pueden dar los argumentos seleccionando la clase\botn derecho\Run as\Open Run Dialog
Java
Arrays y Cadenas
39
Java
Arrays y Cadenas
40
Java
Arrays y Cadenas
41
Java
Arrays y Cadenas
43
Java
Arrays y Cadenas
44
Java
Arrays y Cadenas
45
Ejercicio: Correo
Java
Arrays y Cadenas
46
Ejercicio: Buzn
Java
Arrays y Cadenas
47
Ejercicio: Buzn
Java
Arrays y Cadenas
48
Java
Arrays y Cadenas
49
La clase Vector
Java
Arrays y Cadenas
50
La clase Vector
La clase Vector proporciona mtodos para trabajar con vectores dinmicos de elementos de diferentes tipos.
Java
Arrays y Cadenas
53
Java
Arrays y Cadenas
54
Java
Arrays y Cadenas
55
Java
Arrays y Cadenas
56
Java
Arrays y Cadenas
57
Java
Arrays y Cadenas
59
Java
Arrays y Cadenas
60
Java
Arrays y Cadenas
61
Java
Arrays y Cadenas
62
Java
Arrays y Cadenas
65
Recorrido de un Vector
Vector lines = new Vector(); .... // imprime los elementos del vector for (int i=0; i<lines.size(); ++i){ System.out.println(lines.elementAt(i)); }
Java
Arrays y Cadenas
66
Iterator
I Collection Object implements I Iterator implements iterator() hasNext() Iterator Object
next()
Java Arrays y Cadenas 67
Interface Iterator
Java
Arrays y Cadenas
68
Recorrido de un Vector
import java.util.*; public class BuzonConVector { private Vector<Correo> v ; void imprimeTodos(){ Iterator<Correo> e=v.iterator(); while( e.hasNext()) System.out.println( e.next()); } ... Java Arrays y Cadenas 69 }
Colecciones
"bag" no dupes "File" Structure Hashtable Balanced Tree Resizable Array Linked List
data sequence
indexed
keyed
key sequence
Set
HashSet
SortedSet
List
Map
HashMap
SortedMap
TreeSet
TreeMap
ArrayList
LinkedList
Synchronized
Java
Arrays y Cadenas
Vector Stack
hashTable
70
Java
Arrays y Cadenas
71
Java
Arrays y Cadenas
72
Java
Arrays y Cadenas
73
Java
Arrays y Cadenas
74
Java
Arrays y Cadenas
75
Java
Arrays y Cadenas
76
Ejercicio 7: Banco
Define la clase Banco para gestionar un banco de cuentas corrientes. Para ello debes definir la clase Cuenta cuyos objetos tienen como atributos un String para el propietario, un entero para su clave de identificacin, y un entero para su saldo. La clase Cuenta debe disponer de los siguientes mtodos pblicos: a. Mtodos de acceso para los atributos de la clase b. void ingreso(int k), que ingresa k euros en la cuenta c. void reintegro(int k), que retira k euros de la cuenta d. void imprimeCuenta(), que imprime los datos de una cuenta. Los objetos de la clase Banco estn representados mediante un array de objetos de la clase Cuenta. Esta clase debe incluir los siguientes mtodos pblicos: a. int numeroDeCuentas(), que calcula el nmero de cuentas del banco b. void aadeCuenta(String propietario, int saldo), que crea una nueva cuenta con los datos que se pasan por parmetro, y le asigna un nmero aleatorio como clave de identificacin Java Arrays y Cadenas 77
Ejercicio 7: Banco
c. void eliminaCuenta(int clave), que elimina la cuenta que tiene esta clave de identificacin d. int daSaldo(int clave), que devuelve el saldo de la cuenta dada por su clave de identificacin f. void ingresa(int clave, int k), que ingresa k euros en la cuenta dada por su clave de identificacin g. void reintegra(int clave, int k), que retira k euros de la cuenta dada por su clave de identificacin h. void imprimeCuenta(int clave), que imprime los datos de una clave dada por su clave de identificacin i. int saldoTotal(), que calcula el total de dinero almacenado en el banco j. void imprimeBanco(), que imprime los datos de todas las cuentas del banco.
Java
Arrays y Cadenas
78