Ricardo,

O objeto string não vale porque é uma classe IMUTÁVEL. Não há como trocar o 
valor da String sem criar outro objeto, ou seja, sem criar outra referencia 
!!!!!!

Classes Imutáveis são muito interessantes porque são THREAD-SAFE, evitando 
condições de corridas e bugs intermitentes. Classes mutáveis são perigosas e 
podem introduzir brechas de segurança no seu código, principalmente se você 
estiver escrevendo uma API para um outro programador utilizar. (Alguém aí 
ainda tem a documentação do Java 1.0 ??? Acho que a classe String no começo 
era Mutável e só depois a Sun percebeu que isso não era bom e transformou 
ela em Imutável. Mas não tenho certeza disso.)

Se eu tenho um objeto MUTÁVEL como um Vetor por exemplo, eu posso 
modificá-lo dentro da função sem problemas.

Não é muito difícil construir uma String Mutável e aí eu poderia fazer um 
Swap(s1, s2) pagando o preço de ter que instanciar duas novas Strings. O 
Sven foi muito feliz levantando essa bola do Swap(&a,&b) e acabou me 
deixando com a seguinte dúvida:

Em C++ dá para fazer um Swap de Objetos Imutáveis ??? Se dá gostaria de 
entender como o C++ faz isso, isto é, o que acontece por trás do pano.

------------------------------
Sergio Oliveira Jr.
Sun Certified Java Programmer
Desenvolvedor e Consultor Java
Empresa SmartJava
------------------------------



>From: Ricardo Santiago <[EMAIL PROTECTED]>
>Reply-To: [EMAIL PROTECTED]
>To: [EMAIL PROTECTED]
>Subject: RE: [java-list] Re: Artigo Java x C#
>Date: Wed, 3 Oct 2001 09:16:54 -0700 (PDT)
>
>
>Cara, vamos deixar claro:
>Tudo em java é passado por valor.
>MAS, você só mantém REFERENCIAS para objetos (ou
>pointeiros se achar melhor).
>Logo, todo objeto é passado por referencia visto que a
>referencia é que é passada por valor!
>
>Isso não implica de forma alguma em perda de
>performance, simplesmente significa que qq váriavel
>que você passar como paramêtro, se for modificada
>dentro do método invocado,não refletirá as mudanças
>quando o método retornar
>
>Como em:
>
>String s = "test";
>int i = 1;
>
>mudeOsValores(s, i);
>
>System.out.println(s + 1); // == "test1"
>
>Onde o metodo mudeOsValores contem o seguinte codigo
>
>public void mudeOsValores(String s, int i) {
>   s = "outracoisa";
>   i = 2;
>}
>
>Ricardo Munhoz Santiago
>--- [EMAIL PROTECTED] wrote:
> > Sérgio,
> >
> > Eu gostaria de fazer uma pequena correção no seu
> > email.
> >
> > Java não possui passagem por referência. Somente por
> > valor. Existe uma forma
> > de "simular" passagem de parâmetros por referência,
> > utilizando os objetos ou
> > tipos primitivos armazenados em um array, por
> > exemplo. Mas não existe
> > passagem por referência.
> >
> > Antes que o alguém dê pulinhos de alegria, eu
> > pergunto: e qual é o problema?
> > Alguém por favor, apresente um artigo demonstrativo,
> > baseado em testes de
> > performance ou de algum requisito que mostre qual é
> > o grandisíssimo problema
> > de Java utilizar passagem por valor, e não por
> > referência? Mesmo que haja,
> > isso significa que Java é ruim?
> >
> > Abraços,
> > Denard
> >
> > -----Original Message-----
> > From: Sergio Oliveira Jr.
> > [mailto:[EMAIL PROTECTED]]
> > Sent: terça-feira, 2 de outubro de 2001 22:56
> > To: [EMAIL PROTECTED]
> > Cc: [EMAIL PROTECTED];
> > [EMAIL PROTECTED]
> > Subject: [java-list] Re: Artigo Java x C#
> >
> > Mauro,
> >
> > Não era a minha intensão te tirar do sério. Não vejo
> > problema algum em me
> > engajar num papo com você face-to-face. Só estou
> > conversando com você via
> > email por ser mais conveniente, afinal a tecnologia
> > está aí para facilitar a
> >
> > nossa vida, certo?
> >
> > Vou continuar falando racionalmente, apesar de não
> > ver nenhum problema em te
> >
> > encontrar para um papo mais descontraído.
> >
> > Alguns absurdos que vc escreveu:
> >
> > - Java não possui todos os tipos derivados de
> > ancestral comum:
> >
> > Possui sim... Além de possuir tipos primitivos mais
> > leves, que por sua vez
> > possuem suas classes equivalentes (Wrappers). Todas
> > são derivadas da class
> > Object.
> >
> > - Java não possui Structs:
> >
> > Realmente não possui a palavra Structs, mas é
> > ridículo simular um C Struct
> > com uma class ou inner class.
> >
> > - Java não pode passar parametros por referencia:
> >
> > Todos os objetos Java são passados por referencia.
> > Qualquer principiante em
> > Java precisa saber disso.
> >
> > - Java não possui Propriedades:
> >
> > Já ouviu falar em JavaBeans ??? Tb existe uma classe
> > Properties que faz isso
> >
> > facilmente.
> >
> > - Java categoricamente não possui eventos nem
> > delegate:
> >
> > Toda a GUI do Java é orientada a eventos e a
> > listeners.
> > Java não possui ponteiros para funções, mas possui
> > interfaces que podem
> > facilmente e de uma forma mais elegante e poderosa
> > realizar callbacks.
> >
> > - Java não possui Atributos:
> >
> > Não sei o que vc quiz dizer com isso, mas Java
> > possui uma API de Reflection
> > poderosíssima.
> >
> > - Java não possui Ponteiros:
> >
> > Ainda bem! Referencia = Ponteiro com a excessão que
> > não podemos fazer
> > operações aritiméticas com referencias.
> > Todo mundo sabe que os ponteiros sempre foram a
> > maior fonte de bugs, falhas
> > de segurança, vírus e dores de cabeça para os
> > programadores C.
> >
> > - Java não possui Forech: loop para varrer arrays e
> > coleções
> >
> > Dê uma olhada na API Collections. Vc vai ficar
> > impressionado com a
> > qualidade, eficiência e performance dessa API.
> >
> > - Java não possui Campos readonly.
> >
> > Lógico que possui. Basta utilizar final.
> >
> > - Java não possui Documentação integrada em XML.
> >
> > Javadoc serve exatamente para isso que vc sugere
> > como vantagem do C#.
> >
> > - Java não possui Controle sobre "estouro de faixa"
> > numérica
> >
> > Lógico que possui. Pelo amor de Deus...
> >
> > - Java não possui Diretivas de compilação
> > condicional (#ifdef etc)
> >
> > Não precisa pois utilizando o final boolean DEBUG =
> > false; o compilador
> > automaticamente otimiza o código compilado retirando
> > esse código morto.
> >
> > - Java não possui Padronização por algum organismo
> > internacional
> >
> > ??? Já ouviu falar em Enterprise JavaBeans, Servlet,
> > JSP, etc. Diversas
> > empresas adotaram essas especificações,
> > independentemente de imposições da
> > Sun. Apenas a Máquina Virtual da microsoft não era
> > compatível com todas as
> > demais, daí a derrota da Microsoft na justiça.
> >
> > - Java não Chama APIs do Windows e DLLs
> >
> > Lógico que chama via JNI.
> >
> > Como voce percebe pelos meus comentários acima. Vc
> > definitivamente não é a
> > pessoa certa para fazer essa comparação entre C# e
> > Java. A não ser que vc
> > seja um homem de marketing e não da área de TI.
> >
> > ------------------------------
> > Sergio Oliveira Jr.
> > Sun Certified Java Programmer
> > Desenvolvedor e Consultor Java
> > Empresa SmartJava
> > ------------------------------
> >
> >
> >
> > >From: "Mauro Sant'Anna" <[EMAIL PROTECTED]>
> > >To: [EMAIL PROTECTED]
> > >Subject: Re: Artigo Java x C#
> > >Date: Wed, 03 Oct 2001 00:41:36 +0000
> > >
> > >Se você quizesse "alertar-me", teria fornecido
> > exemplos concretos e fatos
> > >ao invés de me chamar de ignorante/mentiroso.
> > >
> > >É incrível como as pessoas ficam "valentes" na
> > frente de um teclado.
> > >Imagine se você teria a coragem de me dizer cara a
> > cara o que você me
> > >escreveu, depois de uma comparação C# X Java em um
> > eventual seminário da
> > >Microsoft - mais ou menos ou equivalente a um
> > artigo no site da Microsoft.
> > >
> > >Mauro
> > >
> > >>From: "Sergio Oliveira Jr." <[EMAIL PROTECTED]>
> > >>To: [EMAIL PROTECTED]
> > >>CC: [EMAIL PROTECTED],
> > [EMAIL PROTECTED]
> > >>Subject: Re: Artigo Java x C#
> > >>Date: Wed, 03 Oct 2001 00:35:27 +0000
> > >>
> > >>Mauro,
> > >>
> > >>Eu te dei duas opções:
> > >>
> > >>1) Vc está mentindo
> > >>2) Vc não sabe nada sobre Java
> > >>
> > >>Se vc optou pela alternativa 1), não há nada que
> > eu
>=== message truncated ===
>
>
>__________________________________________________
>Do You Yahoo!?
>Listen to your Yahoo! Mail messages from any phone.
>http://phone.yahoo.com
>
>------------------------------ LISTA SOUJAVA ----------------------------
>http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
>dúvidas mais comuns: http://www.soujava.org.br/faq.htm
>regras da lista: http://www.soujava.org.br/regras.htm
>para sair da lista: envie email para [EMAIL PROTECTED]
>-------------------------------------------------------------------------
>


_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp


------------------------------ LISTA SOUJAVA ---------------------------- 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Responder a