Pegadinha: Pool de Strings  XML
Índice dos Fóruns » Certificação Java
Autor Mensagem
duardor
Virtual Machine Man
[Avatar]

Membro desde: 04/12/2002 16:26:48
Mensagens: 552
Localização: BRAZIL
Offline

Ae galera
Essa nao chega a ser uma "Pegadinha", mas vale quem for fazer a prova como eu pegar a documentação de algumas classes e imprimir para estudar.... A classe String eh um exemplo....

Vejam o seguinte codigo e diga qual sera a saida


Eduardo Rodrigues
Belo Horizonte - MG
[Email] [MSN] [ICQ]
urubatan
Moderador
[Avatar]

Membro desde: 21/09/2002 10:31:26
Mensagens: 2478
Localização: Porto Alegre/RS
Offline

se não estou enganado, vai imprimir
false
false

String A = "JAVA";
String B = new String("JAVA");

A e B são duas strings diferents com o mesmo conteúdo

e
String C = B.intern();
C é uma string criada com o array interno apontando para a mesma area de memoria que B, mas o endereço base da string é diferente tanto do A como do B

[]'s
Rodrigo Urubatan
http://www.urubatan.com.br - pt_BR
http://www.urubatan.info - en_US
Arquiteto J2EE
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
[WWW]
mlopes
JavaTeenager
[Avatar]

Membro desde: 18/11/2002 11:01:01
Mensagens: 163
Localização: Alemanha
Offline

Quase,

Não é bem assim, qdo vc chama o intern, o enrdereço retornado é o do pool.

Então o resultado será false, true;

[]'s

Marco Lopes

----------------------------------------------------------
Pássaro que cedo madruga....
... porém o segundo rato é quem pega o queijo
----------------------------------------------------------
[Yahoo!] [MSN]
boaglio
Moderador
[Avatar]

Membro desde: 09/09/2002 21:23:39
Mensagens: 1848
Localização: Sampa City
Offline

Uma pequena observação:

Se o código fosse:



Daria true e true.


 

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de Java via MP!
[WWW]
Rafael Steil
Administrador
[Avatar]

Membro desde: 31/08/2002 02:35:53
Mensagens: 5983
Localização: São Paulo
Offline

Eu expliquei isso em uma outra "pegadinha", acho que foi numa das primeiras. Quem quiser uma explicacao mais a fundo, de uma procurada la.

Rafael

"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"

http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil
[Email] [WWW]
duardor
Virtual Machine Man
[Avatar]

Membro desde: 04/12/2002 16:26:48
Mensagens: 552
Localização: BRAZIL
Offline

Explicou sim rafael mas nao tinha esse lance do intern().
A resposta correta se nao me engano seria:
false
true
O mlopes jah explicou pq...
Daki a poco (quando eu chegar em casa hehe to na facu) vou colocar uma variacao interessante envolvendo esse intern()
Abraços

Eduardo Rodrigues
Belo Horizonte - MG
[Email] [MSN] [ICQ]
Elvis.The.Pelvis
JavaGuru
[Avatar]

Membro desde: 18/12/2002 17:45:34
Mensagens: 220
Localização: Recife/PE
Offline

Se bem que minha prova de certificação não entrou nesse nível de detalhe sobre intern. Só caiu o básico do pool mesmo:
String a = "java";
String b = "java";
//a == b true

Se não fosse o C, até hoje estaríamos programando em BASI, PASAL e OBOL.
Elvis.The.Pelvis é Daniel Freitas
[Email] [WWW] [MSN]
Gerson
JavaChild
[Avatar]

Membro desde: 26/01/2003 19:48:37
Mensagens: 113
Localização: São Paulo
Offline

Apenas complementando o que o mlopes disse...

Não é bem assim, qdo vc chama o intern, o enrdereço retornado é o do pool.


intern() SEMPRE vai retornar o endereço do pool, isto é, MESMO se o objeto String não existesse no pool, ele criaria o objeto String, armazenaria no pool e retornaria sua referencia.

Modificando um pouco, para treinar:



Gerson K.
[MSN]
 
Índice dos Fóruns » Certificação Java
Ir para:   
Powered by JForum 2.1.8 © JForum Team