SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
Strings e I/ O

Grupo de estudo para SCJP
Strings e I/ O
• Tópicos abordados
  – String, StringBuilder, and StringBuffer
    •   The String Class
    •   Important Facts About Strings and Memory
    •   Important Methods in the String Class
    •   The StringBuffer and StringBuilder Classes
    •   Important Methods in the StringBuffer and
        StringBuilder Classes
  – File Navigation and I/ O
    • The java.io.Console Class
Strings
• Strings são objetos imutáveis
• Cada caractere em uma string é 16- bit
  Unicode
• Como strings são objetos, é possível criar
  uma instância:
  – utilizando new:
    String s = new String();
    String s = new String("abcdef");
  – de outras maneiras:
    String s = "abcdef";
Strings: Métodos e
           referências
• Métodos e referências
Strings: Métodos e
           referências
• Métodos e referências
Strings: Métodos e
           referências
• Métodos e referências
Strings: Métodos e
            referências
• Out ros ex em plos
    String x = "Java";
    x.concat(" Rules!");
    System.out.println("x = " + x);
    x.toUpperCase();
    System.out.println("x = " + x);
    x.replace('a', 'X');
    System.out.println("x = " + x);
  – Qual será a saída?
Strings: Métodos e
            referências
• Out ros ex em plos
    String x = "Java";
    x.concat(" Rules!");
    System.out.println("x = " + x);
    x.toUpperCase();
    System.out.println("x = " + x);
    x.replace('a', 'X');
    System.out.println("x = " + x);
  – Qual será a saída? x = Java
Strings: Métodos e
            referências
• Out ro ex em plo
     String x = "Java";
     x = x.concat(" Rules!");
     System.out.println("x = " + x);
  – E agora?
Strings: Métodos e
            referências
• Out ro ex em plo
     String x = "Java";
     x = x.concat(" Rules!");
     System.out.println("x = " + x);
  – E agora? x = Java Rules!
Strings: Métodos e
            referências
• Possível ex emplo do teste
  String s1 = "spring ";
  String s2 = s1 + "summer ";
  s1.concat("fall ");
  s2.concat(s1);
  s1 += "winter ";
  System.out.println(s1 + " " + s2);
• Possíveis questionamentos:
  – Qual a saída? Quantos objetos foram criados?
    Quantos estão perdidos?
Strings: Fatos importantes sobre
            memória
• Área especial na m em ória: St ring
  constant pool
• Referências iguais, objetos iguais
• Para evitar problem as com a
  im utabilidade, a classe String é
  definida com o final
Strings: Fatos importantes sobre
            memória
• Qual a diferença na m em ória entre os
  dois m étodos a seguir?
    String s = "abc";
    String s = new String("abc");
Strings: Fatos importantes sobre
            memória
• Qual a diferença na m em ória entre os
  dois m étodos a seguir?
    String s = "abc";
    String s = new String("abc");
   Pelo fato de utilizarmos o new,um
   novo objeto String será criado na
   memória normal, e “abc” será
   criado na pool
Strings: Métodos im portantes
•   Mét odos important es da classe St ring
    ■ charAt() Returns the character located at the specified index
    ■ concat() Appends one String to the end of another ( "+ " also
      works)
    ■ equalsIgnoreCase() Determines the equality of two Strings,
      ignoring case
    ■ length() Returns the number of characters in a String
    ■ replace() Replaces occurrences of a character with a new character
    ■ substring() Returns a part of a String
    ■ toLowerCase() Returns a String with uppercase characters
      converted
    ■ toString() Returns the value of a String
    ■ toUpperCase() Returns a String with lowercase characters
      converted
    ■ trim() Removes whitespace from the ends of a String
Strings: Erros com uns
• Erros com uns
  – O atributo length
    • Ex emplo:
       String x = "test";
       System.out.println( x.length );
       ou
       String[] x = new String[3];
       System.out.println( x.length() );
    • Qual desses códigos funcionará?
Strings: StringBuffer e
            StringBuilder
• StringBuffer x StringBuilder
  – As duas apresentam a mesma API
  – StringBuilder não apresenta métodos
    sincronizados
  – A Sun recomenda StringBuilder pela sua
    velocidade
Strings: StringBuffer e
             StringBuilder
• Ex em plo inicial
  StringBuffer sb = new StringBuffer("abc");
  sb.append("def");
  System.out.println("sb = " + sb);
  sb = new StringBuilder("abc");
  sb.append("def").reverse().insert(3, "---");
  System.out.println( sb );
  – Qual será a saída?
Strings: StringBuffer e
             StringBuilder
• Ex em plo inicial
  StringBuffer sb = new StringBuffer("abc");
  sb.append("def");
  System.out.println("sb = " + sb);
  sb = new StringBuilder("abc");
  sb.append("def").reverse().insert(3, "---");
  System.out.println( sb );
  – Qual será a saída?
     sb = abcdef
     fed---cba
Strings: StringBuffer e
               StringBuilder
• Métodos importantes
  –   public   synchronized StringBuffer append(String s)
  –   public   StringBuilder delete(int start, int end)
  –   public   StringBuilder insert(int offset, String s)
  –   public   synchronized StringBuffer reverse( )
  –   public   synchronized StringBuffer toString( )
I/ O
• Navegação entre arquivos
• Leitura de arquivos
I/ O
• Navegação entre arquivos
• Leitura de arquivos
I/ O
I/ O
•   Exemplo Geral
          import java.io.*;
          class Writer2 {
             public static void main(String [] args) {
                       char[] in = new char[50];
                       int size = 0;
                       try {
                                     File file = new File("fileWrite2.txt");
                                     FileWriter fw = new FileWriter(file);
                                     fw.write("howdy nfolks n");
                                     fw.flush();
                                     fw.close();
                                       FileReader fr = new FileReader(file);
                                       size = fr.read(in);
                                       System.out.print(size + " ");
                                       for(char c : in)
                                       System.out.print(c);
                                       fr.close();
                       } catch(IOEx ception e) { }
                }
          }
     –   Qual será a saída?
I/ O
•   Exemplo Geral
          import java.io.*;
          class Writer2 {
             public static void main(String [] args) {
                     char[] in = new char[50];
                     int size = 0;
                     try {
                               File file = new File("fileWrite2.txt");
                               FileWriter fw = new FileWriter(file);
                               fw.write("howdynfolksn");
                               fw.flush();
                               fw.close();
                                 FileReader fr = new FileReader(file);
                                 size = fr.read(in);
                                 System.out.print(size + " ");
                                 for(char c : in)
                                 System.out.print(c);
                                 fr.close();
                     } catch(IOException e) { }
                }
          }
     –   Qual será a saída?      12 howdy
                                 folks
I/ O
• Ex em plo com diretório
       File myDir = new File("mydir");
       myDir.mkdir();
       File myFile = new File(myDir,"myFile.txt");
       myFile.createNewFile();
       PrintWriter pw = new PrintWriter(myFile);
       pw.println("new stuff");
       pw.flush();
       pw.close();
I/ O
• Ex em plo com diretório
    File myDir = new File("mydir");
    File myFile = new File(myDir,"myFile.txt");
    myFile.createNewFile();
    O que ocorrerá?
I/ O
• Ex em plo com diretório
    File myDir = new File("mydir");
    File myFile = new File(myDir,"myFile.txt");
    myFile.createNewFile();
    O que ocorrerá?
    java.io.IOException: No such file or directory
I/ O
• Ex emplo com outros métodos
        File delDir = new File("deldir");
        delDir.mkdir();
        File delFile1 = new File(delDir, "delFile1.txt");
        delFile1.createNewFile();
        File delFile2 = new File(
        delDir, "delFile2.txt");
        delFile2.createNewFile();
        delFile1.delete();
        System.out.println("delDir is "+ delDir.delete());
        File newName = new File(delDir, "newName.txt");
        delFile2.renameTo(newName); // rename file
        File newDir = new File("newDir");
        delDir.renameTo(newDir);

        Saída:
          delDir is false
I/ O: Console Class
• Classe para tratar o console
• Sem pre invoca System .console()
• Métodos im portantes:
  – readLine();
  – readPassword();
I/ O: Console Class
•   Exemplo
        import java.io.Console;
        public class NewConsole {
              public static void main(String[] args) {
                   Console c = System.console();
                   char[] pw;
                   pw = c.readPassword("%s", "pw: ");
                   for(char ch: pw)
                   c.format("%c ", ch);
                   c.format("n");
                   MyUtility mu = new MyUtility();
                   while(true) {
                      String name = c.readLine("%s", "input?: ");
                      c.format("output: %s n", mu.doStuff(name));
                   }
              }
        }

        class MyUtility {
              String doStuff(String arg1) {
                 return "result is " + arg1;
              }
        }

Mais conteúdo relacionado

Mais procurados

Apostila de ext js com php e postgresql v0.5
Apostila de ext js com php e postgresql v0.5Apostila de ext js com php e postgresql v0.5
Apostila de ext js com php e postgresql v0.5Luciano Marwell
 
You shall not pass.. permissões no UNIX
You shall not pass.. permissões no UNIXYou shall not pass.. permissões no UNIX
You shall not pass.. permissões no UNIXWilliam Calderipe
 
Passagem de Objetos entre Java e Oracle
Passagem de Objetos entre Java e OraclePassagem de Objetos entre Java e Oracle
Passagem de Objetos entre Java e OracleAndré Reis
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com javaMaurício Linhares
 
Atualização Java 8 (2014)
Atualização Java 8 (2014)Atualização Java 8 (2014)
Atualização Java 8 (2014)Helder da Rocha
 
Threads 06: Coleções concorrentes
Threads 06: Coleções concorrentesThreads 06: Coleções concorrentes
Threads 06: Coleções concorrentesHelder da Rocha
 
Threads 08: Executores e Futures
Threads 08: Executores e FuturesThreads 08: Executores e Futures
Threads 08: Executores e FuturesHelder da Rocha
 
Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsHelder da Rocha
 
Threads 04 Variáveis atômicas
Threads 04 Variáveis atômicasThreads 04 Variáveis atômicas
Threads 04 Variáveis atômicasHelder da Rocha
 
LINQ - Language Integrated Query
LINQ - Language Integrated QueryLINQ - Language Integrated Query
LINQ - Language Integrated QueryDalton Valadares
 
Threads 10: CompletableFuture
Threads 10: CompletableFutureThreads 10: CompletableFuture
Threads 10: CompletableFutureHelder da Rocha
 
Threads 05: Travas de Exclusão Mútua
Threads 05: Travas de Exclusão MútuaThreads 05: Travas de Exclusão Mútua
Threads 05: Travas de Exclusão MútuaHelder da Rocha
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Motalucianacmota
 

Mais procurados (20)

Mongodb workshop cinlug
Mongodb workshop cinlugMongodb workshop cinlug
Mongodb workshop cinlug
 
Apostila de ext js com php e postgresql v0.5
Apostila de ext js com php e postgresql v0.5Apostila de ext js com php e postgresql v0.5
Apostila de ext js com php e postgresql v0.5
 
You shall not pass.. permissões no UNIX
You shall not pass.. permissões no UNIXYou shall not pass.. permissões no UNIX
You shall not pass.. permissões no UNIX
 
Hibernate
HibernateHibernate
Hibernate
 
Python 01
Python 01Python 01
Python 01
 
Passagem de Objetos entre Java e Oracle
Passagem de Objetos entre Java e OraclePassagem de Objetos entre Java e Oracle
Passagem de Objetos entre Java e Oracle
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com java
 
Atualização Java 8 (2014)
Atualização Java 8 (2014)Atualização Java 8 (2014)
Atualização Java 8 (2014)
 
Threads 06: Coleções concorrentes
Threads 06: Coleções concorrentesThreads 06: Coleções concorrentes
Threads 06: Coleções concorrentes
 
Palestra cbq
Palestra cbqPalestra cbq
Palestra cbq
 
Threads 08: Executores e Futures
Threads 08: Executores e FuturesThreads 08: Executores e Futures
Threads 08: Executores e Futures
 
Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e Streams
 
Threads 04 Variáveis atômicas
Threads 04 Variáveis atômicasThreads 04 Variáveis atômicas
Threads 04 Variáveis atômicas
 
LINQ - Language Integrated Query
LINQ - Language Integrated QueryLINQ - Language Integrated Query
LINQ - Language Integrated Query
 
Threads 10: CompletableFuture
Threads 10: CompletableFutureThreads 10: CompletableFuture
Threads 10: CompletableFuture
 
Threads 05: Travas de Exclusão Mútua
Threads 05: Travas de Exclusão MútuaThreads 05: Travas de Exclusão Mútua
Threads 05: Travas de Exclusão Mútua
 
Python 05
Python 05Python 05
Python 05
 
Curso de Java: Threads
Curso de Java: ThreadsCurso de Java: Threads
Curso de Java: Threads
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
 
SPL Datastructures
SPL DatastructuresSPL Datastructures
SPL Datastructures
 

Destaque (8)

Cto Andalucia Infantil Verano 09
Cto Andalucia Infantil Verano 09Cto Andalucia Infantil Verano 09
Cto Andalucia Infantil Verano 09
 
Team
TeamTeam
Team
 
Portfolio
PortfolioPortfolio
Portfolio
 
Double Vision
Double VisionDouble Vision
Double Vision
 
Jornada 3
Jornada 3Jornada 3
Jornada 3
 
Element Canvis De Rol
Element Canvis De RolElement Canvis De Rol
Element Canvis De Rol
 
Aulão de JPA com Tomaz Lavieri
Aulão de JPA com Tomaz LavieriAulão de JPA com Tomaz Lavieri
Aulão de JPA com Tomaz Lavieri
 
Monagas
MonagasMonagas
Monagas
 

Semelhante a String e IO

55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - BrazilStephen Chin
 
Apresentação java io
Apresentação java ioApresentação java io
Apresentação java ioSilvino Neto
 
Jug bizus (4)
Jug   bizus (4)Jug   bizus (4)
Jug bizus (4)JugVale
 
http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/Rodrigo Vieira
 
http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/Rodrigo Vieira
 
Java Desktop
Java DesktopJava Desktop
Java Desktopciceroclc
 
013 programando em python - arquivos
013   programando em python - arquivos013   programando em python - arquivos
013 programando em python - arquivosLeandro Barbosa
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na práticaRafael Cassau
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Luciano Ramalho
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Javathomasdacosta
 
Programação Web com PHP 7.x
Programação Web com PHP 7.xProgramação Web com PHP 7.x
Programação Web com PHP 7.xNorton Guimarães
 
Abstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineAbstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineOtávio Calaça Xavier
 
Classe integer-float-byte-short-long-double
Classe integer-float-byte-short-long-doubleClasse integer-float-byte-short-long-double
Classe integer-float-byte-short-long-doublePAULO Moreira
 
Capítulo 15 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 15 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 15 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 15 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Os Fantasmas !
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao cprofwtelles
 
Mini-Curso de MongoDB
Mini-Curso de MongoDBMini-Curso de MongoDB
Mini-Curso de MongoDBBrunno Gomes
 

Semelhante a String e IO (20)

55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil
 
Apresentação java io
Apresentação java ioApresentação java io
Apresentação java io
 
Jug bizus (4)
Jug   bizus (4)Jug   bizus (4)
Jug bizus (4)
 
Jug bizus
Jug   bizusJug   bizus
Jug bizus
 
http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/
 
http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/
 
Java Desktop
Java DesktopJava Desktop
Java Desktop
 
Workshop Python.2
Workshop Python.2Workshop Python.2
Workshop Python.2
 
013 programando em python - arquivos
013   programando em python - arquivos013   programando em python - arquivos
013 programando em python - arquivos
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na prática
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Java
 
Programação Web com PHP 7.x
Programação Web com PHP 7.xProgramação Web com PHP 7.x
Programação Web com PHP 7.x
 
String
StringString
String
 
Abstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineAbstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP Doctrine
 
Classe integer-float-byte-short-long-double
Classe integer-float-byte-short-long-doubleClasse integer-float-byte-short-long-double
Classe integer-float-byte-short-long-double
 
Capítulo 15 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 15 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 15 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 15 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Mini-Curso de MongoDB
Mini-Curso de MongoDBMini-Curso de MongoDB
Mini-Curso de MongoDB
 

Mais de Elenilson Vieira (20)

Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias Web
 
JavaEE
JavaEEJavaEE
JavaEE
 
JavaME no Mercado Mobile
JavaME no Mercado MobileJavaME no Mercado Mobile
JavaME no Mercado Mobile
 
JavaFX 1.2
JavaFX 1.2JavaFX 1.2
JavaFX 1.2
 
Apresentação da Doom
Apresentação da DoomApresentação da Doom
Apresentação da Doom
 
Palestra sobre a Sun
Palestra sobre a SunPalestra sobre a Sun
Palestra sobre a Sun
 
Apresentação da RedeSoft
Apresentação da RedeSoftApresentação da RedeSoft
Apresentação da RedeSoft
 
Java Collections - Tomaz Lavieri
Java Collections - Tomaz LavieriJava Collections - Tomaz Lavieri
Java Collections - Tomaz Lavieri
 
A Sun no Meio Acadêmico - IESP/FatecPB
A Sun no Meio Acadêmico - IESP/FatecPBA Sun no Meio Acadêmico - IESP/FatecPB
A Sun no Meio Acadêmico - IESP/FatecPB
 
Mini-Curso de Sockets no Unipê
Mini-Curso de Sockets no UnipêMini-Curso de Sockets no Unipê
Mini-Curso de Sockets no Unipê
 
JavaME
JavaMEJavaME
JavaME
 
Concorrência com Java
Concorrência com JavaConcorrência com Java
Concorrência com Java
 
Programas Acadêmicos da Sun no Unipê
Programas Acadêmicos da Sun no UnipêProgramas Acadêmicos da Sun no Unipê
Programas Acadêmicos da Sun no Unipê
 
Mundo Livre e Aberto
Mundo Livre e AbertoMundo Livre e Aberto
Mundo Livre e Aberto
 
JavaME - Aula 2
JavaME - Aula 2JavaME - Aula 2
JavaME - Aula 2
 
JavaME - Aula 1
JavaME - Aula 1JavaME - Aula 1
JavaME - Aula 1
 
Apostila JavaME
Apostila JavaMEApostila JavaME
Apostila JavaME
 
Threads
ThreadsThreads
Threads
 
Sincronização - Glêdson Elias
Sincronização - Glêdson EliasSincronização - Glêdson Elias
Sincronização - Glêdson Elias
 
Collections e Generics
Collections e GenericsCollections e Generics
Collections e Generics
 

String e IO

  • 1. Strings e I/ O Grupo de estudo para SCJP
  • 2. Strings e I/ O • Tópicos abordados – String, StringBuilder, and StringBuffer • The String Class • Important Facts About Strings and Memory • Important Methods in the String Class • The StringBuffer and StringBuilder Classes • Important Methods in the StringBuffer and StringBuilder Classes – File Navigation and I/ O • The java.io.Console Class
  • 3. Strings • Strings são objetos imutáveis • Cada caractere em uma string é 16- bit Unicode • Como strings são objetos, é possível criar uma instância: – utilizando new: String s = new String(); String s = new String("abcdef"); – de outras maneiras: String s = "abcdef";
  • 4. Strings: Métodos e referências • Métodos e referências
  • 5. Strings: Métodos e referências • Métodos e referências
  • 6. Strings: Métodos e referências • Métodos e referências
  • 7. Strings: Métodos e referências • Out ros ex em plos String x = "Java"; x.concat(" Rules!"); System.out.println("x = " + x); x.toUpperCase(); System.out.println("x = " + x); x.replace('a', 'X'); System.out.println("x = " + x); – Qual será a saída?
  • 8. Strings: Métodos e referências • Out ros ex em plos String x = "Java"; x.concat(" Rules!"); System.out.println("x = " + x); x.toUpperCase(); System.out.println("x = " + x); x.replace('a', 'X'); System.out.println("x = " + x); – Qual será a saída? x = Java
  • 9. Strings: Métodos e referências • Out ro ex em plo String x = "Java"; x = x.concat(" Rules!"); System.out.println("x = " + x); – E agora?
  • 10. Strings: Métodos e referências • Out ro ex em plo String x = "Java"; x = x.concat(" Rules!"); System.out.println("x = " + x); – E agora? x = Java Rules!
  • 11. Strings: Métodos e referências • Possível ex emplo do teste String s1 = "spring "; String s2 = s1 + "summer "; s1.concat("fall "); s2.concat(s1); s1 += "winter "; System.out.println(s1 + " " + s2); • Possíveis questionamentos: – Qual a saída? Quantos objetos foram criados? Quantos estão perdidos?
  • 12. Strings: Fatos importantes sobre memória • Área especial na m em ória: St ring constant pool • Referências iguais, objetos iguais • Para evitar problem as com a im utabilidade, a classe String é definida com o final
  • 13. Strings: Fatos importantes sobre memória • Qual a diferença na m em ória entre os dois m étodos a seguir? String s = "abc"; String s = new String("abc");
  • 14. Strings: Fatos importantes sobre memória • Qual a diferença na m em ória entre os dois m étodos a seguir? String s = "abc"; String s = new String("abc"); Pelo fato de utilizarmos o new,um novo objeto String será criado na memória normal, e “abc” será criado na pool
  • 15. Strings: Métodos im portantes • Mét odos important es da classe St ring ■ charAt() Returns the character located at the specified index ■ concat() Appends one String to the end of another ( "+ " also works) ■ equalsIgnoreCase() Determines the equality of two Strings, ignoring case ■ length() Returns the number of characters in a String ■ replace() Replaces occurrences of a character with a new character ■ substring() Returns a part of a String ■ toLowerCase() Returns a String with uppercase characters converted ■ toString() Returns the value of a String ■ toUpperCase() Returns a String with lowercase characters converted ■ trim() Removes whitespace from the ends of a String
  • 16. Strings: Erros com uns • Erros com uns – O atributo length • Ex emplo: String x = "test"; System.out.println( x.length ); ou String[] x = new String[3]; System.out.println( x.length() ); • Qual desses códigos funcionará?
  • 17. Strings: StringBuffer e StringBuilder • StringBuffer x StringBuilder – As duas apresentam a mesma API – StringBuilder não apresenta métodos sincronizados – A Sun recomenda StringBuilder pela sua velocidade
  • 18. Strings: StringBuffer e StringBuilder • Ex em plo inicial StringBuffer sb = new StringBuffer("abc"); sb.append("def"); System.out.println("sb = " + sb); sb = new StringBuilder("abc"); sb.append("def").reverse().insert(3, "---"); System.out.println( sb ); – Qual será a saída?
  • 19. Strings: StringBuffer e StringBuilder • Ex em plo inicial StringBuffer sb = new StringBuffer("abc"); sb.append("def"); System.out.println("sb = " + sb); sb = new StringBuilder("abc"); sb.append("def").reverse().insert(3, "---"); System.out.println( sb ); – Qual será a saída? sb = abcdef fed---cba
  • 20. Strings: StringBuffer e StringBuilder • Métodos importantes – public synchronized StringBuffer append(String s) – public StringBuilder delete(int start, int end) – public StringBuilder insert(int offset, String s) – public synchronized StringBuffer reverse( ) – public synchronized StringBuffer toString( )
  • 21. I/ O • Navegação entre arquivos • Leitura de arquivos
  • 22. I/ O • Navegação entre arquivos • Leitura de arquivos
  • 23. I/ O
  • 24. I/ O • Exemplo Geral import java.io.*; class Writer2 { public static void main(String [] args) { char[] in = new char[50]; int size = 0; try { File file = new File("fileWrite2.txt"); FileWriter fw = new FileWriter(file); fw.write("howdy nfolks n"); fw.flush(); fw.close(); FileReader fr = new FileReader(file); size = fr.read(in); System.out.print(size + " "); for(char c : in) System.out.print(c); fr.close(); } catch(IOEx ception e) { } } } – Qual será a saída?
  • 25. I/ O • Exemplo Geral import java.io.*; class Writer2 { public static void main(String [] args) { char[] in = new char[50]; int size = 0; try { File file = new File("fileWrite2.txt"); FileWriter fw = new FileWriter(file); fw.write("howdynfolksn"); fw.flush(); fw.close(); FileReader fr = new FileReader(file); size = fr.read(in); System.out.print(size + " "); for(char c : in) System.out.print(c); fr.close(); } catch(IOException e) { } } } – Qual será a saída? 12 howdy folks
  • 26. I/ O • Ex em plo com diretório File myDir = new File("mydir"); myDir.mkdir(); File myFile = new File(myDir,"myFile.txt"); myFile.createNewFile(); PrintWriter pw = new PrintWriter(myFile); pw.println("new stuff"); pw.flush(); pw.close();
  • 27. I/ O • Ex em plo com diretório File myDir = new File("mydir"); File myFile = new File(myDir,"myFile.txt"); myFile.createNewFile(); O que ocorrerá?
  • 28. I/ O • Ex em plo com diretório File myDir = new File("mydir"); File myFile = new File(myDir,"myFile.txt"); myFile.createNewFile(); O que ocorrerá? java.io.IOException: No such file or directory
  • 29. I/ O • Ex emplo com outros métodos File delDir = new File("deldir"); delDir.mkdir(); File delFile1 = new File(delDir, "delFile1.txt"); delFile1.createNewFile(); File delFile2 = new File( delDir, "delFile2.txt"); delFile2.createNewFile(); delFile1.delete(); System.out.println("delDir is "+ delDir.delete()); File newName = new File(delDir, "newName.txt"); delFile2.renameTo(newName); // rename file File newDir = new File("newDir"); delDir.renameTo(newDir); Saída: delDir is false
  • 30. I/ O: Console Class • Classe para tratar o console • Sem pre invoca System .console() • Métodos im portantes: – readLine(); – readPassword();
  • 31. I/ O: Console Class • Exemplo import java.io.Console; public class NewConsole { public static void main(String[] args) { Console c = System.console(); char[] pw; pw = c.readPassword("%s", "pw: "); for(char ch: pw) c.format("%c ", ch); c.format("n"); MyUtility mu = new MyUtility(); while(true) { String name = c.readLine("%s", "input?: "); c.format("output: %s n", mu.doStuff(name)); } } } class MyUtility { String doStuff(String arg1) { return "result is " + arg1; } }