String myName = new String()?

9 respostas
K

Qual a diferença de usar

String myName = new String(?Fred Smith?);

ou

String myName = ?Fred Smith?;

Não entendi o conceito

Obrigado.

9 Respostas

C

Em uma vc cria uma um novo objeto String e atribui a esse novo objeto o valor.

em outro vc atribui o valor pra String.

entendeu ??

M
String s = new String( "EU AMO O PORTAL JAVA" )

esse código cria uma variavel de referencia s, logo instancia uma nova String na memoria e atribui a s…

String s = "ELE AMA O PORTAL JAVA"

agora pra esse codigo vc tem q enteder o pool de strings de Java… como objetos strings tendem a ser comuns em programas, e ser muitos, java usa um pool de strings pra colocar as strings q são iguais, mas se vc usar o operador new pra criar uma, vc tera 2 objetos strings na memoria, vejamos…

String s = “abc”
o java vai criar um novo objeto string na memoria com o valor “abc”, agora:

String s2 = “abc”
o java só vai criar uma nova referencia pra apontar pro MESMO objeto string na memoria… mas qnd vc fizer:

s = s + “def”;

o objeto s2 continuara referenciando “abc”, mas o java vai criar uma nova string “abcdef” e fará a variavel s referenciar… agora se vc fizer:

String s3 = new String( “abcdef” );

o java nao vai fazer s3 apontar pro mesmo objeto “abcdef” q esta no pool… vai criar outro objeto String com o conteudo “abcdef”, mas em outro local de memoria, definitivamente, vc tera 2 objetos String com o valor “abcdef”

sacou? hehehe :grin:

D

Blz… vou até entrar no meio da discurssão aqui… se me permitem… ehhe
Queria saber qual a vantagem então de se criar, instanciar um objeto String?
teria alguma aplicação pratica? um exemplo que ilustrasse a vantagem?

Grato…

R

“diogoacl”:
Blz… vou até entrar no meio da discurssão aqui… se me permitem… ehhe
Queria saber qual a vantagem então de se criar, instanciar um objeto String?
teria alguma aplicação pratica? um exemplo que ilustrasse a vantagem?

Grato…

nenhuma se vc estiver criando uma string a partir de um valor “asdasd”

mas o construtor da classe string pode receber um Array de bytes, de chars, uma StringBuffer…

ai deve-se usae o construtor instanciando o objeto

K

“microfilo”:
“diogoacl”:
Blz… vou até entrar no meio da discurssão aqui… se me permitem… ehhe
Queria saber qual a vantagem então de se criar, instanciar um objeto String?
teria alguma aplicação pratica? um exemplo que ilustrasse a vantagem?

Grato…

nenhuma se vc estiver criando uma string a partir de um valor “asdasd”

mas o construtor da classe string pode receber um Array de bytes, de chars, uma StringBuffer…

ai deve-se usae o construtor instanciando o objeto

Beleza pessoal…agora entendi a diferença. Vcs teriam algum código que identifica a real necessidade de se utilizar new String() ? Se não for pedir demais…

Obrigado

M

vcs estão olhando pelo lado contrario das coisas, Strings são objetos, como todos os objetos elas tem seu construtor… o certo é instanciar pelo construtor, mas como strings são usadas por todo o código, tem esse atalho de simplesmente atribuir a um literal string…

B

é menos performatico fazer isso :

String a = new String("adskj"); String b = new String("adskj"); String c = new String("adskj"); String d = new String("adskj");

ou isso :

String a = "adskj"; String b = "adskj"; String c = "adskj"; String d = "adskj";

M

“Brossi”:
é menos performatico fazer isso :

String a = new String("adskj"); String b = new String("adskj"); String c = new String("adskj"); String d = new String("adskj");

ou isso :

String a = "adskj"; String b = "adskj"; String c = "adskj"; String d = "adskj";

da na mesma… a diferença é q na primeira tu ta instanciando explicitamente, e na segunda ta deixando isso pro compilador fazer…

S

Não são a mesma coisa!
No primeiro caso, você tá criando 4 objetos String no heap, mais um no pool de strings.
No segundo caso, só 1 objeto é criado, e todas as variáveis referenciam o mesmo objeto.

Criado 1 de outubro de 2004
Ultima resposta 24 de mar. de 2005
Respostas 9
Participantes 7