Eh o seguinte , realmente achei que tava louco , mas entao fiz um outro exemplo pra tu dares uma olhada ... neste caso eu procuro nao fazer as coisas dentro do metodo main() ... fiz uma filha de JApplet mas tu podes rodar com o comamdo "java EEste" , nao precisa do appletviewer ... O que importa eh que tu repares como temos um Quadradinho (um objeto de uma classe qualquer) que eh mandado por parametro tendo um dado inteiro coordx igual a 1 , e apos executado o metodo mudeOsValores() este valor eh alterado para 0 ... e entao , me explica esta passagem por valor !!! ... Cara , eu fiquei abismado quando testei o que tu mandaste e realmente funcionou como tu diceste , mas daih eu pensei que tivesse a ver com o metodo main , que eh statico , e coloquei no init() (por isso fiz uma filha de JAPplet) , mas deu na mesma para o inteiro e a String , interessante como um inteiro e um objeto do tipo String se comportam diferente de todos os objetos que jah criei ateh hoje (como o Quadradinho por exemplo) ...
import javax.swing.*; import java.awt.*; public class EEste extends JApplet{ Quadradinho q; public void init(){ q=new Quadradinho(new Rectangle(),1,1,1); System.out.println("q.coordx= "+q.coordx); mudeOsValores(q); System.out.println("q.coordx= "+q.coordx); } void mudeOsValores(Quadradinho q) { q.coordx=0; } public static void main(String args[]){ EEste ee=new EEste(); ee.init(); ee.start(); } } /*tu vais precisar da classe Quadradinho tambem , mas eh soh pra funcionar mesmo , trata-se de uma classe que eu tinha aqui a mao pra exemplo*/ import java.awt.*; public class Quadradinho{ public Rectangle r; public int coordx,coordy,redesup,redeinf,index; public Quadradinho(Rectangle re,int x,int y,int i){ redesup=0; redeinf=0; r=re; coordx=x; coordy=y; index=i; } } --- Ricardo Santiago <[EMAIL PROTECTED]> escreveu: > > Não estou querendo te chamar de louco, mas acho que > voce deveria ter testado antes de dizer que "sempre > funcionou" errado. > Por voce mesmo nao testa? > > public class ProvaDaPassagemPorValor { > > public static void main(String [] s) { > String s = "test"; > int i = 1; > mudeOsValores(s, i); > System.out.println(s + i); > > } > > private static void mudeOsValores(String s, int i) > { > s = "outroValor"; > i = 2; > } > > } > > Ricardo Munhoz Santiago > > --- Wild Boar Wannabe <[EMAIL PROTECTED]> > wrote: > > > > Perae !!! Eh claro que refletira as mudancas !!! > > Apos > > ser chamado o metodo mudeOsValores() o inteiro e a > > String mandados por parametro terao seus valores > > mudados !!! Ou entao eu tou louco !!! Por que > sempre > > foi assim pra mim ... > > > > --- Ricardo Santiago <[EMAIL PROTECTED]> > > escreveu: > > > > 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 > === message truncated === _______________________________________________________________________________________________ Yahoo! GeoCities Tenha seu lugar na Web. Construa hoje mesmo sua home page no Yahoo! GeoCities. É fácil e grátis! http://br.geocities.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] -------------------------------------------------------------------------