SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
SCJP 6
  Clase 10 – Strings, I/O




    Ezequiel Aranda
Sun Microsystems Campus
      Ambassador
Disclaimer & Acknowledgments
> Even though Ezequiel Aranda is a full-time employee of Sun
  Microsystems, the contents here are created as his own
  personal endeavor and thus does not reflect any official
  stance of Sun Microsystems.
> Sun Microsystems is not responsible for any inaccuracies in
  the contents.
> This slides are Licensed under a Creative Commons
  Attribution – Noncommercial – Share Alike 3.0
   > http://creativecommons.org/licenses/by-nc-sa/3.0/
AGENDA

>  trings
 S
>  tringBuilder y
 S
 StringBuffer
>  anejo del sistema
 M
 de archivos
String

>  l concepto clave del String es entender que,
 E
 una vez creado un objeto de este tipo, no
 puede ser modificado.
>  ntonces, ¿qué es lo que realmente sucede
 E
 cuando modificamos un String?
Creando un String

  String s = "abcdef";
>  rea un nuevo objeto de la clase String con el
 C
 valor “abcdef”, y se lo asigna a la referencia
 ‘s’.

  String s2 = s;
>  signa el mismo string a la referencia s2.
 A
Modificando un String

  s = s.concat(" more stuff");
>  concat” añade un literal al final del String…
 “

>  Pero, ¿No habíamos
 …
 dicho que los Strings
 eran inmutables?
Modificando un String (II)
>  n realidad, el objeto String es inmutable,
 E
 pero la referencia no lo es.
>  or lo tanto, lo que sucede es lo siguiente:
 P
  >  a JVM crea un nuevo String y le da el valor que
   L
   resulta de concatenar “abcdef” y “ more stuff”.
  >  uego, actualiza ‘s’ para referenciar al nuevo
   L
   String.
>  bservaciones
 O
  >  écnicamente, ahora hay 3 Strings: “abcdef,” “
   T
   more stuff” y “abcdef more stuff”.
  > s2’ aún hace referencia a “abcdef”.
   ‘
Pregunta

  String s1 = "spring ";
  String s2 = s1 + "summer ";
  s1.concat("fall ");
  s2.concat(s1);
  s1 += "winter ";
  System.out.println(s1 + " " + s2);
>  Qué imprime?
 ¿
>  Cuántos objetos se crearon?
 ¿
Strings y Memoria

> Para que el manejo de memoria sea más eficiente,
  la JVM reserva una porción de memoria conocida
  como “String Pool”.
> La regla es la siguiente:
  cuando el compilador
  encuentra un literal, se
  fija en el pool a ver si
  hay alguno que
  coincida, si es así la
  referencia es dirigida al
  literal existente, y no se
  crea un nuevo literal.
Strings y Memoria (II)

>  sto es lo que hace a la inmutabilidad una
 E
 buena idea.
>  i una de varias referencias al mismo String
 S
 pudiese modificarlo, sería desastroso.
>  ero… ¿Qué pasa si alguien sobrescribe la
 P
 funcionalidad de la clase String? ¿Podría
 causar problemas en el pool?
Pero… ¿Qué pasa si alguien
                    sobrescribe la funcionalidad
                     de la clase String? ¿Podría
                      causar problemas en el
                                pool?




>  ada, porque la clase String es final.
 N
Métodos importantes de la clase
             String
    Método           Tipo de retorno                     Descripción

charAt(int index)         char         Retorna el carácter ubicado en la posición index

                                        Retorna el String que resulta de concatenar el
 concat(String s)        String
                                         String utilizado para invocar el método y s.

equalsIgnoreCase(                      Retorna true si el contenido de ambos strings es
                        boolean
    String s)                             igual, ignorando mayusculas/ minusculas

                                         La longitud del String usado para invocar el
    length()               int
                                                           método


replace(char old,                       Retorna un String resultado de reemplazar el
                         String
   char new)                                carácter “old” por el carácter “new”
Métodos importantes de la clase
           String (II)
    Método          Tipo de retorno                     Descripción

substring(int a) 
                                         Retorna una subcadena que va desde la
substring (int a,       String
                                            posición ‘a’ hasta la posición ‘b’
     int b)
                                      Retorna un String cuyo valor es el del utilizado
toLowerCase()           String          para invocar el método, pero con todas las
                                       mayúsculas intercambiadas por minúsculas .

   toString()           String                      El valor del String.


                                          Funciona igual que toLowerCase, pero
toUpperCase()           String
                                       intercambiando minúsculas por mayúsculas.

                                      Retorna un String cuyo valor es el del utilizado
     trim()             String         para invocar el método pero sin espacios al
                                             principio o al final de la cadena.
StringBuffer y StringBuilder

>  eben utilizarse cuando debemos hacer
 D
 muchas modificaciones en un String.
  >  i modificamos muchas veces una gran cantidad
   S
   de Strings terminaremos con un pool gigante de
   Strings abandonados.
>  n uso común de StringBuffer es la
 U
 manipulación de archivos:
  >  ratamos al archivo como un gran bloque de
   T
   datos, los cerramos y luego podemos reutilizar el
   buffer para el siguiente archivo.
¿StringBuffer o StringBuilder?

>  on exactamente iguales, con la excepción de
 S
 que StringBuffer es thread safe mientras que
 StringBuilder no lo es.
>  omo siempre, es recomendable, por razones
 C
 de rendimiento, usar la clase que no es
 thread safe salvo que nos encontremos en un
 entorno multi hilo.
Usando StringBuffer/Builder

>  tilizando Strings:
 U
  String x = "abc";
  x = x.concat("def");
>  tilizando StringBuffer/Builder
 U
  StringBuffer x= new StringBuffer("abc");
  x.append("def");
>  n ambos casos, si imprimimos el valor de x,
 E
 el mismo será “abcdef”, pero en el caso del
 String, hemos abandonado en el pool al
 String “abc” original.
Métodos importantes de
                  StringBuffer/Builder
     Método               Tipo de retorno                        Descripción
                                               Retorna el StringB que resulta de concatenar el
append (String s)       StringBuffer/Builder    StringB utilizado para invocar el método y el
                                                                   String s.
                                               Retorna un StringB que resulta de eliminar del
delete(int a, int b)    StringBuffer/Builder    invocante la subcadena delimitada por ‘a’ (0
                                                           based) y ‘b’ (1 based).
                                               Retorna un StringB que resulta de insertar en el
insert(int a, String 
                        StringBuffer/Builder      invocante la subcadena ‘b’ a partir de la
         b)
                                                                posición ‘a’.
                                                Retorna un StringB que resulta de invertir el
     reverse()          StringBuffer/Builder
                                                                invocante.

    toString()                 String              Retorna el valor del StringB invocante

Nota: si bien estos métodos “retornan” un StringB, en realidad
modifican el invocante y retornan una referencia al mismo.
Clases para el manejo de archivos

>  ile: representación abstracta de un
 F
 pathname. Se usa para realizar operaciones
 como crear, buscar y borrar archivos y
 directorios.
>  ileReader: utilizada para leer archivos de
 F
 caracteres. En general se utilizan wrappers
 más específicos.
>  ufferedReader: un wrapper de FileReader
 B
 que utiliza buffers para aumentar la
 eficiencia.
Clases para el manejo de archivos (II)

>  ileWriter: la contraparte de FileReader, al
 F
 igual que con esta última, en general se
 utilizan wrappers más versátiles y eficientes.
>  ufferedWriter: la contraparte de
 B
 BufferedReader para escrituras. Provee
 escritura por líneas.
>  rintWriter: Un writer con varios métodos que
 P
 lo vuelven muy flexible y versátil.
Creando un archivo utilizando File
class Writer1 {
public static void main(String [] args) {
try {
  boolean newFile = false;
  File file = new File ("fileWrite1.txt"); //un
  objeto File
  System.out.println(file.exists()); // ¿existe el
  archivo?
  newFile = file.createNewFile();     // lo creamos
  System.out.println(newFile);
  System.out.println(file.exists()); // ¿ahora si?
}
catch(IOException e) { }
}
}
Creando un archivo utilizando File (II)

>  rimera ejecución:
 P
  >  xists retorna false.
   e
  >  reateNewFile retorna true.
   c
  >  l segundo exists retorna true.
   E
>  egunda ejecución:
 S
  >  xists retorna true.
   e
  >  reateNewFile retorna false.
   c
  >  l segundo exists retorna true.
   E
Usando FileWriter y FileReader
class Writer2 {
  public static void main(String [] args) {
   char[] in = new char[50];
   // para almacenar el input
   int size = 0;
   try {
      File file = new File("fileWrite2.txt”);
      // creamos un objeto file
      FileWriter fw = new FileWriter(file);
      // y un objeto FileWriter
      fw.write("howdynfolksn");
      // escribimos algunos caracteres
      fw.flush(); // flush
      fw.close(); // close
Usando FileWriter y FileReader (II)
          FileReader fr = new FileReader(file);
          // creamos un objeto FileReader
          size = fr.read(in);
          // Leemos el archivo completo
          System.out.print(size + " ");
          // cantidad de bytes que leimos
          for(char c : in)
          // imprimimos el array
          System.out.print(c);
          fr.close(); // cerramos el archivo
        }
        catch(IOException e) { }
    }
}
Parte de java.io necesaria para el examen SCJP
                 Extiende Argumentos clave de los
    Clase                                           Métodos clave
                    de        constructores
                                                    createNewFile()  
                                                         delete()  
                                                         exists()  
                                 File, String
                                                      isDirectory()  
     File        Object             String
                                                          isFile()  
                                Strin, String
                                                            list()  
                                                         mkdir()  
                                                       renameTo() 
                                                        close()
                                    File
  FileWriter      Writer                                flush()
                                   String
                                                        write()

                                                       close()
                                                       flush()
BufferedWriter    Writer           Writer
                                                      newLine()
                                                       write()
Parte de java.io necesaria para el examen SCJP (II)
                 Extiende   Argumentos clave de
    Clase                                           Métodos clave
                    de        los constructores

                                                         close()  
                                File (java 5)
                                                         flush()  
                               String (java 5)
 PrintWriter      Writer                          format()*, prinI()*  
                               OutputStream
                                                    print(), println()  
                                   Writer
                                                         write()



                                    File
  FileReader     Reader                                  read()
                                   String




                                                        read()
BufferedReader   Reader           Reader
                                                      readLine()
Trabajando con archivos y directorios

> File file = new File("foo");
  >  i “foo” no existe, no se crea hasta que lo
   S
   ordenemos con createNewFile().
  >  i “foo” existe, el objeto file ahora se refiere a
   S
   dicho archivo.
>  i, en cambio, queremos crear un archivo:
 S
  > File file = new File("foo");
    file.createNewFile();
  > File file = new File("foo");
    PrintWriter pw = new PrintWriter(file);
Trabajando con archivos y directorios (II)

>  l caso de los directorios es similar:
 E
  File myDir = new File("mydir");
  myDir.mkdir();
  File myFile = new File(myDir, "myFile.txt");

  myFile.createNewFile();

>  i bien creando un writer podemos crear un
 S
 archivo sin necesidad de llamar a
 createNewFile(), los directorios nunca se
 crean sin un mkdir().
Trabajando con archivos y directorios (III)

// creamos un directorio
File delDir = new File("deldir");
delDir.mkdir();
// agregamos un archivo al directorio
File delFile1 = new File(delDir, "delFile1.txt");
delFile1.createNewFile();
// agregamos otro archivo al directorio
File delFile2 = new File(delDir, "delFile2.txt");
delFile2.createNewFile();
// borramos delFile1
delFile1.delete();
Trabajando con archivos y directorios (IV)

// intentamos borrar el directorio
System.out.println(“delDir is” + delDir.delete());
// creamos un nuevo objeto
File newName = new File(delDir, "newName.txt");
// renombramos el archivo
delFile2.renameTo(newName);
// de la misma forma, renombramos el directorio
File newDir = new File("newDir");
delDir.renameTo(newDir);
Trabajando con archivos y directorios (V)

>  e lo anterior, podemos observar que:
 D
  >  elete() no borra un directorio si no está vacío.
   d
  >  enameTo() debe recibir un objeto File valido del
   r
   cual tomará el nombre.
  >  enameTo() puede renombrar un directorio si no
   r
   está vacío.
Buscar archivos

>  sumiendo que tenemos un directorio
 A
 llamado “searchThis”, podemos iterar a
 través del mismo en busca de un archivo con:
  String[] files = new String[100];
  File search = new File("searchThis");
  files = search.list();
  for(String fn : files)
    System.out.println("found " + fn);
Preguntas

Contenu connexe

Tendances

Tendances (8)

Chap 15cpin
Chap 15cpinChap 15cpin
Chap 15cpin
 
Tema 12 hilos en java por gio
Tema 12   hilos en java por gioTema 12   hilos en java por gio
Tema 12 hilos en java por gio
 
Jyoc java-cap04 vectores (arrays)
Jyoc java-cap04 vectores (arrays)Jyoc java-cap04 vectores (arrays)
Jyoc java-cap04 vectores (arrays)
 
2o departamental Programacion 3
2o departamental Programacion 32o departamental Programacion 3
2o departamental Programacion 3
 
Multitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplosMultitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplos
 
Programando en java
Programando en javaProgramando en java
Programando en java
 
LibreríAs De Java
LibreríAs De JavaLibreríAs De Java
LibreríAs De Java
 
Greenfoot 5
Greenfoot 5Greenfoot 5
Greenfoot 5
 

En vedette

Cultura Libre: Origenes, Definiciones y Alcances
Cultura Libre: Origenes, Definiciones y AlcancesCultura Libre: Origenes, Definiciones y Alcances
Cultura Libre: Origenes, Definiciones y Alcancesflekoso
 
Introducción a JavaFX
Introducción a JavaFXIntroducción a JavaFX
Introducción a JavaFXflekoso
 
SCJP, Clase 5: Control de Flujo
SCJP, Clase 5: Control de FlujoSCJP, Clase 5: Control de Flujo
SCJP, Clase 5: Control de Flujoflekoso
 
De 0 A Python En 40 Minutos
De 0 A Python En 40 MinutosDe 0 A Python En 40 Minutos
De 0 A Python En 40 Minutosflekoso
 
SCJP, Clase 6: Collections
SCJP, Clase 6: CollectionsSCJP, Clase 6: Collections
SCJP, Clase 6: Collectionsflekoso
 
SCJP, Clase 4: Operadores
SCJP, Clase 4: OperadoresSCJP, Clase 4: Operadores
SCJP, Clase 4: Operadoresflekoso
 
SCJP, Clase 8: Inner Classes
SCJP, Clase 8: Inner ClassesSCJP, Clase 8: Inner Classes
SCJP, Clase 8: Inner Classesflekoso
 
SCJP, Clase 7: Generics
SCJP, Clase 7: GenericsSCJP, Clase 7: Generics
SCJP, Clase 7: Genericsflekoso
 
Ruby: a Programmer's best friend
Ruby: a Programmer's best friendRuby: a Programmer's best friend
Ruby: a Programmer's best friendflekoso
 
SCJP, Clase 2: Ejemplos De Enum, Poo
SCJP, Clase 2: Ejemplos De Enum, PooSCJP, Clase 2: Ejemplos De Enum, Poo
SCJP, Clase 2: Ejemplos De Enum, Pooflekoso
 
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...flekoso
 
JavaFX 1.2 - Introducción
JavaFX 1.2 - IntroducciónJavaFX 1.2 - Introducción
JavaFX 1.2 - Introducciónflekoso
 
Clase math tablas SEMESTRE 2
Clase math tablas SEMESTRE 2Clase math tablas SEMESTRE 2
Clase math tablas SEMESTRE 2K Manuel TN
 
Índice Libro "macOS Hacking" de 0xWord
Índice Libro "macOS Hacking" de 0xWordÍndice Libro "macOS Hacking" de 0xWord
Índice Libro "macOS Hacking" de 0xWordTelefónica
 
Introducción a la Programación con Java
Introducción a la Programación con JavaIntroducción a la Programación con Java
Introducción a la Programación con Javaflekoso
 

En vedette (15)

Cultura Libre: Origenes, Definiciones y Alcances
Cultura Libre: Origenes, Definiciones y AlcancesCultura Libre: Origenes, Definiciones y Alcances
Cultura Libre: Origenes, Definiciones y Alcances
 
Introducción a JavaFX
Introducción a JavaFXIntroducción a JavaFX
Introducción a JavaFX
 
SCJP, Clase 5: Control de Flujo
SCJP, Clase 5: Control de FlujoSCJP, Clase 5: Control de Flujo
SCJP, Clase 5: Control de Flujo
 
De 0 A Python En 40 Minutos
De 0 A Python En 40 MinutosDe 0 A Python En 40 Minutos
De 0 A Python En 40 Minutos
 
SCJP, Clase 6: Collections
SCJP, Clase 6: CollectionsSCJP, Clase 6: Collections
SCJP, Clase 6: Collections
 
SCJP, Clase 4: Operadores
SCJP, Clase 4: OperadoresSCJP, Clase 4: Operadores
SCJP, Clase 4: Operadores
 
SCJP, Clase 8: Inner Classes
SCJP, Clase 8: Inner ClassesSCJP, Clase 8: Inner Classes
SCJP, Clase 8: Inner Classes
 
SCJP, Clase 7: Generics
SCJP, Clase 7: GenericsSCJP, Clase 7: Generics
SCJP, Clase 7: Generics
 
Ruby: a Programmer's best friend
Ruby: a Programmer's best friendRuby: a Programmer's best friend
Ruby: a Programmer's best friend
 
SCJP, Clase 2: Ejemplos De Enum, Poo
SCJP, Clase 2: Ejemplos De Enum, PooSCJP, Clase 2: Ejemplos De Enum, Poo
SCJP, Clase 2: Ejemplos De Enum, Poo
 
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
 
JavaFX 1.2 - Introducción
JavaFX 1.2 - IntroducciónJavaFX 1.2 - Introducción
JavaFX 1.2 - Introducción
 
Clase math tablas SEMESTRE 2
Clase math tablas SEMESTRE 2Clase math tablas SEMESTRE 2
Clase math tablas SEMESTRE 2
 
Índice Libro "macOS Hacking" de 0xWord
Índice Libro "macOS Hacking" de 0xWordÍndice Libro "macOS Hacking" de 0xWord
Índice Libro "macOS Hacking" de 0xWord
 
Introducción a la Programación con Java
Introducción a la Programación con JavaIntroducción a la Programación con Java
Introducción a la Programación con Java
 

Similaire à SCJP, Clase 10: Strings, I/O

Similaire à SCJP, Clase 10: Strings, I/O (20)

Clase10 stringsio
Clase10 stringsioClase10 stringsio
Clase10 stringsio
 
Uso de cadenas en java
Uso de cadenas en javaUso de cadenas en java
Uso de cadenas en java
 
Longitud de cadena y funciones en java
Longitud de cadena y funciones en javaLongitud de cadena y funciones en java
Longitud de cadena y funciones en java
 
Libreria c++
Libreria c++Libreria c++
Libreria c++
 
14 tiposdemetodos
14 tiposdemetodos14 tiposdemetodos
14 tiposdemetodos
 
Semana03 prog ii
Semana03 prog iiSemana03 prog ii
Semana03 prog ii
 
Clase3 asignaciones
Clase3 asignacionesClase3 asignaciones
Clase3 asignaciones
 
Lenguaje de Programacion - Java
Lenguaje de Programacion - JavaLenguaje de Programacion - Java
Lenguaje de Programacion - Java
 
Trabajo programacion 1 jose silva
Trabajo programacion 1 jose silvaTrabajo programacion 1 jose silva
Trabajo programacion 1 jose silva
 
C++ y sus librerias
C++ y sus libreriasC++ y sus librerias
C++ y sus librerias
 
Lenguajes de Programación: Tutorial csharp
Lenguajes de Programación: Tutorial csharpLenguajes de Programación: Tutorial csharp
Lenguajes de Programación: Tutorial csharp
 
Jyoc java-cap10 clases complementarias y enumerados
Jyoc java-cap10 clases complementarias y enumeradosJyoc java-cap10 clases complementarias y enumerados
Jyoc java-cap10 clases complementarias y enumerados
 
Strings
StringsStrings
Strings
 
Apoo v
Apoo vApoo v
Apoo v
 
Tema 7 www.fresymetal.com
Tema 7 www.fresymetal.comTema 7 www.fresymetal.com
Tema 7 www.fresymetal.com
 
Tipo de Operadores
Tipo de OperadoresTipo de Operadores
Tipo de Operadores
 
Codigos C+++
Codigos C+++Codigos C+++
Codigos C+++
 
Utilización de la clase math
Utilización de la clase mathUtilización de la clase math
Utilización de la clase math
 
Códigos c++
Códigos c++Códigos c++
Códigos c++
 
Leccion 12 Java
Leccion 12 JavaLeccion 12 Java
Leccion 12 Java
 

Dernier

LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 

Dernier (20)

LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 

SCJP, Clase 10: Strings, I/O

  • 1. SCJP 6 Clase 10 – Strings, I/O Ezequiel Aranda Sun Microsystems Campus Ambassador
  • 2. Disclaimer & Acknowledgments > Even though Ezequiel Aranda is a full-time employee of Sun Microsystems, the contents here are created as his own personal endeavor and thus does not reflect any official stance of Sun Microsystems. > Sun Microsystems is not responsible for any inaccuracies in the contents. > This slides are Licensed under a Creative Commons Attribution – Noncommercial – Share Alike 3.0 > http://creativecommons.org/licenses/by-nc-sa/3.0/
  • 3. AGENDA >  trings S >  tringBuilder y S StringBuffer >  anejo del sistema M de archivos
  • 4. String >  l concepto clave del String es entender que, E una vez creado un objeto de este tipo, no puede ser modificado. >  ntonces, ¿qué es lo que realmente sucede E cuando modificamos un String?
  • 5. Creando un String String s = "abcdef"; >  rea un nuevo objeto de la clase String con el C valor “abcdef”, y se lo asigna a la referencia ‘s’. String s2 = s; >  signa el mismo string a la referencia s2. A
  • 6. Modificando un String s = s.concat(" more stuff"); >  concat” añade un literal al final del String… “ >  Pero, ¿No habíamos … dicho que los Strings eran inmutables?
  • 7. Modificando un String (II) >  n realidad, el objeto String es inmutable, E pero la referencia no lo es. >  or lo tanto, lo que sucede es lo siguiente: P >  a JVM crea un nuevo String y le da el valor que L resulta de concatenar “abcdef” y “ more stuff”. >  uego, actualiza ‘s’ para referenciar al nuevo L String. >  bservaciones O >  écnicamente, ahora hay 3 Strings: “abcdef,” “ T more stuff” y “abcdef more stuff”. > s2’ aún hace referencia a “abcdef”. ‘
  • 8. Pregunta String s1 = "spring "; String s2 = s1 + "summer "; s1.concat("fall "); s2.concat(s1); s1 += "winter "; System.out.println(s1 + " " + s2); >  Qué imprime? ¿ >  Cuántos objetos se crearon? ¿
  • 9. Strings y Memoria > Para que el manejo de memoria sea más eficiente, la JVM reserva una porción de memoria conocida como “String Pool”. > La regla es la siguiente: cuando el compilador encuentra un literal, se fija en el pool a ver si hay alguno que coincida, si es así la referencia es dirigida al literal existente, y no se crea un nuevo literal.
  • 10. Strings y Memoria (II) >  sto es lo que hace a la inmutabilidad una E buena idea. >  i una de varias referencias al mismo String S pudiese modificarlo, sería desastroso. >  ero… ¿Qué pasa si alguien sobrescribe la P funcionalidad de la clase String? ¿Podría causar problemas en el pool?
  • 11. Pero… ¿Qué pasa si alguien sobrescribe la funcionalidad de la clase String? ¿Podría causar problemas en el pool? >  ada, porque la clase String es final. N
  • 12. Métodos importantes de la clase String Método Tipo de retorno Descripción charAt(int index) char Retorna el carácter ubicado en la posición index Retorna el String que resulta de concatenar el concat(String s) String String utilizado para invocar el método y s. equalsIgnoreCase( Retorna true si el contenido de ambos strings es boolean String s) igual, ignorando mayusculas/ minusculas La longitud del String usado para invocar el length() int método replace(char old,  Retorna un String resultado de reemplazar el String char new) carácter “old” por el carácter “new”
  • 13. Métodos importantes de la clase String (II) Método Tipo de retorno Descripción substring(int a)  Retorna una subcadena que va desde la substring (int a, String posición ‘a’ hasta la posición ‘b’ int b) Retorna un String cuyo valor es el del utilizado toLowerCase() String para invocar el método, pero con todas las mayúsculas intercambiadas por minúsculas . toString() String El valor del String. Funciona igual que toLowerCase, pero toUpperCase() String intercambiando minúsculas por mayúsculas. Retorna un String cuyo valor es el del utilizado trim() String para invocar el método pero sin espacios al principio o al final de la cadena.
  • 14. StringBuffer y StringBuilder >  eben utilizarse cuando debemos hacer D muchas modificaciones en un String. >  i modificamos muchas veces una gran cantidad S de Strings terminaremos con un pool gigante de Strings abandonados. >  n uso común de StringBuffer es la U manipulación de archivos: >  ratamos al archivo como un gran bloque de T datos, los cerramos y luego podemos reutilizar el buffer para el siguiente archivo.
  • 15. ¿StringBuffer o StringBuilder? >  on exactamente iguales, con la excepción de S que StringBuffer es thread safe mientras que StringBuilder no lo es. >  omo siempre, es recomendable, por razones C de rendimiento, usar la clase que no es thread safe salvo que nos encontremos en un entorno multi hilo.
  • 16. Usando StringBuffer/Builder >  tilizando Strings: U String x = "abc"; x = x.concat("def"); >  tilizando StringBuffer/Builder U StringBuffer x= new StringBuffer("abc"); x.append("def"); >  n ambos casos, si imprimimos el valor de x, E el mismo será “abcdef”, pero en el caso del String, hemos abandonado en el pool al String “abc” original.
  • 17. Métodos importantes de StringBuffer/Builder Método Tipo de retorno Descripción Retorna el StringB que resulta de concatenar el append (String s) StringBuffer/Builder StringB utilizado para invocar el método y el String s. Retorna un StringB que resulta de eliminar del delete(int a, int b) StringBuffer/Builder invocante la subcadena delimitada por ‘a’ (0 based) y ‘b’ (1 based). Retorna un StringB que resulta de insertar en el insert(int a, String  StringBuffer/Builder invocante la subcadena ‘b’ a partir de la b) posición ‘a’. Retorna un StringB que resulta de invertir el reverse() StringBuffer/Builder invocante. toString() String Retorna el valor del StringB invocante Nota: si bien estos métodos “retornan” un StringB, en realidad modifican el invocante y retornan una referencia al mismo.
  • 18. Clases para el manejo de archivos >  ile: representación abstracta de un F pathname. Se usa para realizar operaciones como crear, buscar y borrar archivos y directorios. >  ileReader: utilizada para leer archivos de F caracteres. En general se utilizan wrappers más específicos. >  ufferedReader: un wrapper de FileReader B que utiliza buffers para aumentar la eficiencia.
  • 19. Clases para el manejo de archivos (II) >  ileWriter: la contraparte de FileReader, al F igual que con esta última, en general se utilizan wrappers más versátiles y eficientes. >  ufferedWriter: la contraparte de B BufferedReader para escrituras. Provee escritura por líneas. >  rintWriter: Un writer con varios métodos que P lo vuelven muy flexible y versátil.
  • 20. Creando un archivo utilizando File class Writer1 { public static void main(String [] args) { try { boolean newFile = false; File file = new File ("fileWrite1.txt"); //un objeto File System.out.println(file.exists()); // ¿existe el archivo? newFile = file.createNewFile(); // lo creamos System.out.println(newFile); System.out.println(file.exists()); // ¿ahora si? } catch(IOException e) { } } }
  • 21. Creando un archivo utilizando File (II) >  rimera ejecución: P >  xists retorna false. e >  reateNewFile retorna true. c >  l segundo exists retorna true. E >  egunda ejecución: S >  xists retorna true. e >  reateNewFile retorna false. c >  l segundo exists retorna true. E
  • 22. Usando FileWriter y FileReader class Writer2 { public static void main(String [] args) { char[] in = new char[50]; // para almacenar el input int size = 0; try { File file = new File("fileWrite2.txt”); // creamos un objeto file FileWriter fw = new FileWriter(file); // y un objeto FileWriter fw.write("howdynfolksn"); // escribimos algunos caracteres fw.flush(); // flush fw.close(); // close
  • 23. Usando FileWriter y FileReader (II) FileReader fr = new FileReader(file); // creamos un objeto FileReader size = fr.read(in); // Leemos el archivo completo System.out.print(size + " "); // cantidad de bytes que leimos for(char c : in) // imprimimos el array System.out.print(c); fr.close(); // cerramos el archivo } catch(IOException e) { } } }
  • 24. Parte de java.io necesaria para el examen SCJP Extiende Argumentos clave de los Clase Métodos clave de constructores createNewFile()   delete()   exists()   File, String isDirectory()   File Object String isFile()   Strin, String list()   mkdir()   renameTo()  close() File FileWriter Writer flush() String write() close() flush() BufferedWriter Writer Writer newLine() write()
  • 25. Parte de java.io necesaria para el examen SCJP (II) Extiende Argumentos clave de Clase Métodos clave de los constructores close()   File (java 5) flush()   String (java 5) PrintWriter Writer format()*, prinI()*   OutputStream print(), println()   Writer write() File FileReader Reader read() String read() BufferedReader Reader Reader readLine()
  • 26. Trabajando con archivos y directorios > File file = new File("foo"); >  i “foo” no existe, no se crea hasta que lo S ordenemos con createNewFile(). >  i “foo” existe, el objeto file ahora se refiere a S dicho archivo. >  i, en cambio, queremos crear un archivo: S > File file = new File("foo"); file.createNewFile(); > File file = new File("foo"); PrintWriter pw = new PrintWriter(file);
  • 27. Trabajando con archivos y directorios (II) >  l caso de los directorios es similar: E File myDir = new File("mydir"); myDir.mkdir(); File myFile = new File(myDir, "myFile.txt"); myFile.createNewFile(); >  i bien creando un writer podemos crear un S archivo sin necesidad de llamar a createNewFile(), los directorios nunca se crean sin un mkdir().
  • 28. Trabajando con archivos y directorios (III) // creamos un directorio File delDir = new File("deldir"); delDir.mkdir(); // agregamos un archivo al directorio File delFile1 = new File(delDir, "delFile1.txt"); delFile1.createNewFile(); // agregamos otro archivo al directorio File delFile2 = new File(delDir, "delFile2.txt"); delFile2.createNewFile(); // borramos delFile1 delFile1.delete();
  • 29. Trabajando con archivos y directorios (IV) // intentamos borrar el directorio System.out.println(“delDir is” + delDir.delete()); // creamos un nuevo objeto File newName = new File(delDir, "newName.txt"); // renombramos el archivo delFile2.renameTo(newName); // de la misma forma, renombramos el directorio File newDir = new File("newDir"); delDir.renameTo(newDir);
  • 30. Trabajando con archivos y directorios (V) >  e lo anterior, podemos observar que: D >  elete() no borra un directorio si no está vacío. d >  enameTo() debe recibir un objeto File valido del r cual tomará el nombre. >  enameTo() puede renombrar un directorio si no r está vacío.
  • 31. Buscar archivos >  sumiendo que tenemos un directorio A llamado “searchThis”, podemos iterar a través del mismo en busca de un archivo con: String[] files = new String[100]; File search = new File("searchThis"); files = search.list(); for(String fn : files) System.out.println("found " + fn);