Questao 91 TestKiller

7 respostas
M
Question 91

Given:

11. public String makinStrings() {

12. String s = ?Fred?;

13. s = s + ?47?;

14. s = s.substring(2, 5);

15. s = s.toUpperCase();

16. return s.toString();

17. }

How many String objects will be created when this method is invoked?

A. 1

B. 2

C. 3

D. 4

E. 5

F. 6

Pessoal segundo o TestKiller a resposta certa eh a C.

Alguem pode me explicar porque ???

Grato

7 Respostas

Higashi

Olá MAMS

CREIO eu que essa parte da API responde sua pergunta


The String class represents character strings. All string literals in Java programs, such as “abc”, are implemented as instances of this class.

Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings. Because String objects are immutable they can be shared.

Será que alguem pode confirmar?

romarcio

Acho que funciona mais ou menos assim:

public String makinStrings() {
        //cria um objeto String com o valor "Fred" e aponta para a variavel de referencia s
        String s = "Fred";
        //cria um objeto String com o valor "47" 
        //cria um objeto String com o valor "Fred47" e aponta para a variavel de referencia s
        s = s + "47";
        //nao cria objeto, apenas retorna para variavel s os caracteres "ed4"
        s = s.substring(2, 5);
        //nao cria um objeto, apenas retorna para variavel s os caracteres "ED4" (em caixa alta)
        s = s.toUpperCase();
               //não cria um objeto, apenas retorna o valor de s
        return s.toString();
    }

Se estiver equivocado, podem me corrigir ou acrescentar algo.

Higashi

Eu acho que não me expressei direito ali em cima e não deu pra entender nada… :smiley:

vou se mais especifico…

Como uma String é imutavel e se usa operadores “+” para concatenão e não uma StringBuffer
a JVM cria objetos temporários na memória e a substring tambem retorna um objeto com o valor
especificado.

Então cria-se um objeto quando se cria a String, quando se concatena e quando se usa a substring

ganondorfan

Tem certeza que a resposta é 3?

Se eu tivesse que optar, eu optaria por 4.

Cosmolense

A resposta é a C mesmo

“Fred” e “47” são criadas no pool de Strings quado a classe é carregada.

É criada uma nova string Fred47 em
s = s + “47”;

É criada uma segunda string ed4 em
s = s.substring(2, 5);

É criada uma terceira string ED4 em
s = s.toUpperCase();

Portanto, são criadas três strings.

Acho que tem alguns tópicos discutindo essa mesma questão por aí

F

Eu também teria chutado 4…

Fred

Fred47

ed4

ED4

RafaFloripa

fred
fred47
47

Criado 19 de outubro de 2010
Ultima resposta 26 de out. de 2010
Respostas 7
Participantes 7