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] -------------------------------------------------------------------------