Ricardo, Vc tem toda razão. Só quiz dizer que se a String fosse um Objeto mutátvel haveria como modificá-la dentro de uma função.
Ainda estou com a seguinte dúvida: Em que C++ difere de Java nesse ponto ??? Vale lembrar que em C++ strings são arrays de char, o que acredito ser totalmente mutável. Daí a possibilidade de alterar a String dentro de uma função através da referência. Estou certo ou errado? ------------------------------ 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] Passando por referencias !!!!!!!! >Date: Thu, 4 Oct 2001 03:51:16 -0700 (PDT) > > >Acho que voce nao prestou BEM atencao no exemplo. >Eu estava efetivamente mudando a REFERENCIA para outra >String, e nao usando algum metodo que modifique seu >estado interior. Que cairia na estoria das classes >imutaveis > >Mudando para uma classe mutável, exemplo StringBuffer >veja o método: > >public void mudaStringBuffer(StringBuffer b) { > b.append("mais texto"); >} > >E claro que as mudanças refletirao no parametro depois >que o metodo terminar. > >mas se o metodo fosse > >public void mudaStringBuffer(StringBuffer b) { > b = new StringBuffer("mais texto"); >} > >As mudanças nao refletiriam. > >Nao tem nada a ver a estoria de objeto mutavel e >imutavel, o que interessa eh que as referencias sao >passadas por valor. Os objetos sao passados por >referencia. > >Eu estava tentando mostrar o obvio! > >Ricardo Munhoz Santiago > >--- "Sergio Oliveira Jr." <[EMAIL PROTECTED]> wrote: > > 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: > > > > > > >=== message truncated === > > >__________________________________________________ >Do You Yahoo!? >NEW from Yahoo! GeoCities - quick and easy web site hosting, just >$8.95/month. >http://geocities.yahoo.com/ps/info1 > >------------------------------ 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] -------------------------------------------------------------------------