Mini-teste

  1. Dado:
    
                    package devmedia;
    
                    public class StringTeste {
    
                    public static void main(String args[]){
    
                    StringBuffer buffer = new StringBuffer("123");
    
                    sb.append("456").reverse().insert(2, "…");
    
                    System.out.println("strbuffer: "+ buffer);
    
                    }
    
                    }
                    
    Quantos objetos foram criados ao executar esse código?
    1. 1
    2. 2
    3. 3
    4. Nenhum
    5. Não compila
    6. É lançada uma Exception
  2. Quais declarações sobre as classes String, StringBuffer e StringBuilder são corretas?
    1. Todas as três classes têm métodos append() sobrecarregados.
    2. O “+” é um operador sobrecarregado para as três classes.
    3. Todas as três classes têm um método lenght().
    4. Os objetos do tipo StringBuffer são seguros em relação aos threads.
    5. De acordo com a API, StringBuffer será mais rápida do que StringBuilder na maioria das implementações.
    6. O valor de uma instância de qualquer um desses três tipos pode ser modificado por meio de vários métodos da API.
  3. Observe o seguinte código:
    
                    package devmedia;
    
                    public class Main {
    
                    /**
    
                    * @param args
    
                    */
    
                    public static void main(String[] args) {
    
                    String e="-";
    
                    Integer x = 343;
    
                    long L343 = 343L;
    
                    if(x.equals(L343))e+=".a1";
    
                    if(x.equals(343))e+=".a2";
    
                    Short s1 = (short)(new Short((short)343)/(new Short((short)49)));
    
                    if(s1==7)e+="=e";
    
                    if(s1< new Integer(7+1)) e+="run";
    
                    System.out.println(s);
    
                    }
    
                    }
                    
    Quais das seguintes alternativas serão adicionadas na String de saída e?
    1. =e
    2. .a2
    3. run
    4. .a1
    5. Nenhuma das anteriores
    6. A compilação falha
    7. É lançada uma exceção em tempo de execução
  4. Dado o seguinte código:
    
                    package devmedia;
    
                    import java.io.File;
    
                    import java.io.IOException;
    
                    public class WriterTest {
    
                    /**
    
                    * @param args
    
                    */
    
                    public static void main(String[] args) {
    
                    try {
    
                    File file = new File("arquivo.txt");
    
                    file.createNewFile();
    
                    System.out.println(file.exists());
    
                    } catch (IOException e) {
    
                    e.printStackTrace();
    
                    }
    
                    }
    
                    }
                    
    Quais classes poderiam entrar no lugar de IOException?
    1. SQLException
    2. Error
    3. Throwable
    4. Exception
    5. Object

GABARITO COMENTADO

  1. Resposta A

    Instâncias de StringBuilder não são imutáveis como Strings. Desse modo apenas uma instância é produzida e, de fato, essa única instância terá o mesmo endereço, sendo, nessa situação, sucessivamente modificada.

  2. Resposta C e D

    Evidentemente, as 3 classes possuem o método length(), que retorna o tamanho da String, ou StringBuffer, ou StringBuilder. A diferença entre StringBuilder e StringBuffer é que StringBuffer é menos performática devido a ser seguro em relação aos threads. StringBuilder foi introduzida na versão 5, não é thread-safe e por esse motivo é mais rápida que sua antecessora, menos segurança, mais rapidez.

    O “+” serve como operador sobrecarregado de concatenação somente para a classe String. Por fim, Strings são instâncias imutáveis. Cada vez que você tenta alterar, uma nova String é produzida e a anterior fica sujeita ao coletor de lixo.

  3. Resposta A,B e C

    A 1ª comparação retorna false. Um tipo long nunca será igual a um tipo Integer. Na 2ª comparação, um int pode ser comparado a um Integer, então ela retorna true. Em seguida, s1 recebe 7 e a comparação 7==7 retorna true. A opção C mostra que é possível criar um objeto wrapper com uma expressão e fazer unboxing dele para compará-lo com um tipo primitivo.

  4. Resposta C e D

    No lugar de IOException, só existe a possibilidade de entrar exceções mais genéricas e que façam parte da mesma hierarquia. Sendo assim, no caso, só há duas possibilidades: Throwable e Exception.

Na próxima parte abordaremos mais algumas questões.


Leia todos artigos da série