PDF de programación - LPS: Array, String y Stream

Imágen de pdf LPS: Array, String y Stream

LPS: Array, String y Streamgráfica de visualizaciones

Publicado el 1 de Octubre del 2020
332 visualizaciones desde el 1 de Octubre del 2020
1,6 MB
22 paginas
Creado hace 13a (04/11/2010)
Federico Peinado
www.federicopeinado.es

Depto. de Ingeniería del Software e
Inteligencia Artificial
disia.fdi.ucm.es

Facultad de Informática
www.fdi.ucm.es

Universidad Complutense de Madrid
www.ucm.es

Los usos básicos de Java son similares a
los de otros lenguajes de programación
• Array (para representar una serie de elementos)
• String (para representar cadenas de caracteres)
• Varios tipos de “Streams”, para representar flujos

de entrada/salida al sistema)

Laboratorio de Programación de Sistemas – Array, String y Stream

2

Laboratorio de Programación de Sistemas – Array, String y Stream

3

fijo de variables del mismo tipo

 Construcción en dos pasos

Declaración

 Clase “especial” de Java que representa una serie de tamaño

Inicialización

1.
int[] v; // También se acepta int v[];
2.
v = new int[10];
• Ambos pasos se pueden hacer al mismo tiempo
int[] v1 = new int[10];
int[] v2 = {3, 4, 5};
Rectangulo[] r = new Rectangulo[2];
r[0] = new Coordenada(0, 0);
r[1] = new Coordenada(1, 0);
Rectangulo[] r2 = r; // Recuerda, ¡esto no es clonar!

 Las variables contenidas pueden ser referencias a objetos

Laboratorio de Programación de Sistemas – Array, String y Stream

4

 Valores de tipos simples como contenido

 Referencias a objetos como contenido

• Se reserva espacio en memoria para N * tamañodelTipo
• Los datos se guardan en el propio objeto Array
• Se reserva memoria para N referencias
• En el objeto Array sólo hay guardadas referencias en cada posición

Coche[] arrayCoches = new Coche[3];

arrayCoches

arrayCoches[0] = new Coche();
arrayCoches[1] = new Coche();
arrayCoches[2] = new Coche();

arrayCoches

null

null

null

Laboratorio de Programación de Sistemas – Array, String y Stream

5

Coche@4c62

Coche@4c61

Coche@4c63

 Las posiciones van de 0 a N-1 (como en C++)
• Si accedemos fuera de estas posiciones se lanza una
excepción específica para indicar el error
IndexOutOfBoundsException
• La longitud está disponible en un atributo length
int v[] = new v[10];
int num = v.length; // num pasa a valer 10

 Acceso
v[0] = 0;
int x = v[0];
 Copia
• Requiere usar un método estático de la clase System
System.arraycopy(Object src, int srcPos,

Object dest, int destPos, int length)

Laboratorio de Programación de Sistemas – Array, String y Stream

6

 Arrays cuyo contenido son a su vez arrays
int[][] arrayDoble;
arrayDoble = new int[3][3];

arrayDoble

Conceptualmente es una matriz

Laboratorio de Programación de Sistemas – Array, String y Stream

7

 Al ser el array multidimensional una referencia, se
permite que cada array de su contenido sea distinto
int[][] arrayDoble;
arrayDoble = new int[][3];
arrayDoble[0] = new int[4];
arrayDoble[1] = new int[2];
arrayDoble[2] = new int[3];

arrayDoble

Laboratorio de Programación de Sistemas – Array, String y Stream

8

Laboratorio de Programación de Sistemas – Array, String y Stream

9

Clase “especial” de Java que representa
cadenas de caracteres
java.lang.String
• Ofrece varios métodos útiles para su manipulación

 El contenido de la cadena se considera inmutable
 Funcionan accediendo y sirviendo para hacer copias

Es una clase final

• Este modificador indica que ninguna otra clase

puede heredar de ella (es debido a cuestiones
peliagudas de su implementación interna)

Laboratorio de Programación de Sistemas – Array, String y Stream

10

• Devuelven la cadena copiada toda en mayúsculas/minúsculas

toUpperCase() / toLowerCase()
length()

• Devuelve la longitud de la cadena

 En este caso sí disponemos de un método, no como en los arrays

• Devuelve el carácter en la posición i de la cadena

charAt(i)
compareTo(s)

• Comparación lexicográfica entre cadenas (según el orden
“alfabético” en que se colocarían devuelve <0, 0 ó >0)
• Devuelve cero en el caso de que equals(s) devuelve cierto
• Igual que el anterior pero ignorando mayúsculas/minúsculas

compareToIgnoreCase(s)
startsWith(s) / endsWith(s)

• Comprueba si la cadena empieza/termina con un determinado

prefijo/sufijo



Laboratorio de Programación de Sistemas – Array, String y Stream

11

 Se usa el operador + (ó +=)

• El compilador usará de forma implícita StringBuilder
• Realiza automáticamente la conversión de tipos distintos a String
String s = “hola ”;
s = s + “mundo ” + 47;
 java.lang.StringBuilder
• Conjunto mutable de caracteres
 java.lang.StringBuffer

• Conjunto mutable de caracteres y seguro ante hebras
• Se añaden nuevos caracteres mediante append
• Se puede convertir en una cadena mediante toString()
StringBuffer sb = new StringBuffer();
sb.append("Hola ");
sb.append(nombre);
String s = sb.toString();
System.out.println(s);

Laboratorio de Programación de Sistemas – Array, String y Stream

12

Integer(String cadena); // String a Integer
Integer.valueOf("4"); // String a Integer
Integer.valueOf(cadena); // String a Integer
int k = Integer.parseInt("4"); // String a int
int k = Integer.parseInt(cadena); // String a int

Integer objInt = new Integer(450);
String s = objInt.toString(); // Integer a String

Laboratorio de Programación de Sistemas – Array, String y Stream

13

substring(beginIndex, endIndex) substring(beginIndex)

• Devuelve una subcadena que empieza en beginIndex (y
termina en endIndex, si éste se especifica)
• Separación de una cadena en tokens (o lexemas)
• Recibe la cadena en el constructor y se pueden indicar cuales han

StringTokenizer

de ser los delimitadores de tokens
 Por defecto son los espacios en blanco, saltos de línea, etc.
• hasMoreTokens()
 Verifica si hay más tokens en la cadena
• nextToken()
 Devuelve el siguiente token encontrado

StringTokenizer st = new StringTokenizer("this is a
test");
while (st.hasMoreTokens()) {
}

System.out.println(st.nextToken());

Laboratorio de Programación de Sistemas – Array, String y Stream

14

Laboratorio de Programación de Sistemas – Array, String y Stream

15

 Dos clases “especiales” principales que se

usan para representar flujos de datos
• InputStream

 Es cualquier fuente desde el que se reciben datos

(ficheros, socket de red, otro programa…)

• OutputStream

 Es cualquier destino hacia el que se trasmiten datos
 Todos trabajan con secuencias de datos

(ficheros, socket de red, otro programa…)

• Algunos solo retrasmiten datos
• Otros permiten manipular y transformar datos
• Y otros incluso pueden interconectarse formando un

pipeline de flujos de datos

Laboratorio de Programación de Sistemas – Array, String y Stream

16

Laboratorio de Programación de Sistemas – Array, String y Stream

17

 System.out

• Atributo público de la clase System, de tipo
java.io.PrintStream
• Tiene métodos para escribir los distintos tipos de datos
• De cada uno tiene dos versiones
 print
 println // añade salto de línea al final

System.out.println(“Cadena en la primera línea”);
int dia = 26;
String mes = “octubre”
System.out.print(“Hoy es “);
System.out.print(dia);
System.out.println(“ de “ + mes);
Cadena en la primera línea
Hoy es 26 de octubre

Laboratorio de Programación de Sistemas – Array, String y Stream

18

 Similar a printf de C++ (desde Java 1.5)
 Clase java.util.Formatter

• Esta clase se usa en los métodos printf y format de
la clase PrintStream
• Similar (pero no igual) a la usada en C
 Después de % aparece el número de argumento, seguido de $
con el tipo del mismo

Punto p1, p2;

System.out.printf(“Segmento: (%1$d ,%2$d) - (%3$d

,%4$d)\n”, p1.getX(), p1.getY(), p2.getX(), p2.getY());

Laboratorio de Programación de Sistemas – Array, String y Stream

19

 System.in

• Atributo público de la clase System, de tipo
java.io.InputStream
• Lee bytes usando el método read
• Puede generar excepciones java.io.IOException
• Es algo incómodo para leer órdenes del usuario
int b = 0 ;
try {
b = System.in.read() ;
} catch (java.io.IOException ex ) {
System.out.println(“Excepción capturada”);
} System.out.println(“Leído ”+ (char)b);

Laboratorio de Programación de Sistemas – Array, String y Stream

20

java.util.Scanner (desde Java 1.5)
• Tiene métodos nextInt, nextLong, nextLine, etc.
• También se puede preguntar si existen datos con
hasNextInt, hasNextLong, hasNextLine, etc.

java.util.Scanner sc = new java.util.Scanner(System.in);
int dia; int mes; long anyo;
System.out.println(“Introduzca la fecha:”);
System.out.print(“Dia: ”);
dia = sc.nextInt();
System.out.print(“Mes: ”);
mes= sc.nextInt();
System.out.print(“Año: ”);
anyo = sc.nextLong();

Laboratorio de Programación de Sistemas – Array, String y Stream

21

Federico Peinado

www.federicopeinado.es
  • Links de descarga
http://lwp-l.com/pdf18298

Comentarios de: LPS: Array, String y Stream (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad