Passagem por referência ou valor são conceitos, não
é uma questão de consultar as especificações. Primeiro, só podemos alterar o
valor de um parâmetro e o mesmo afetar a origem por duas maneiras, a primeira
utilizando ponteiros e alterando o espaço de memória por ele indicado, e a
segunda utilizando um parâmetro passado por referência. Como java não trabalho
com ponteiros logo o parâmetro é passado por referência. Mesmo porque estaria
conceitualmente incorreto dizer que podemos alterar o valor de um parâmetro se o
mesmo fosse passado por valor.
Atenciosamente
Otávio Ribeiro
----- Original Message -----
Sent: Monday, February 04, 2002 2:59
PM
Subject: Re: Re: RES: [java-list] Como é
feita a passagem de parâmetros em Java?
Certo. Agora ficou mais claro.
Desculpe.
Um abraço,
----- Original Message -----
Sent: Monday, February 04, 2002 1:13
PM
Subject: RES: Re: RES: [java-list] Como
é feita a passagem de parâmetros em Java?
Oi
Lincolm, eu sei que você sabe o que está falando :). Eu também digo que a
passagem é feita por valor, concordamos 100%. Já com o Sven digamos que eu
concordo 50% ;).
[]'s,
Leonardo.
Ei Leonardo, eu sei o que
estou falando. E digo que Java usa passagem por valor. O Sven que está
tentando provar que é por referência. Já indiquei alguns links apontando
para o JDC(Java Developement Connection) onde é mostrada claramente essa
distinção.
Não tenho que provar nada,
apenas digo que Java usa passagem por valor.
----- Original Message -----
Sent: Monday, February 04, 2002
9:46 AM
Subject: RES: Re: RES: [java-list]
Como é feita a passagem de parâmetros em Java?
A única resposta certa é : A passagem de
parametros é feita somente por valor.
Não adianta consultar a especificação da
linguagem.. procure alguma explicação conceitual sobre passagem por
parametro e por valor pois creio que você e o Lincolm estão falando a
mesma coisa mas cada um chama de um nome.
[]'s,
Leonardo.
Lincolm,
A única resposta certo
é:
Em java passagem de parametros de tipos primitivos é por
valor e de Objetos é por referencia. No cado de Objetos é passado a
referencia do Objeto na vm. Ao entrar no metodo o VM cria uma copia do
objeto. Dentro do metodo este cópia é usado igual qualquer outro
variavel local. Se não for bastante claro, ver a 'java language
specification',
Sven
Lincolm Ferreira de Aguiar
wrote:
012901c1a8b9$a5d99200$[EMAIL PROTECTED]
type="cite">Olá Fábio,
Tudo bem. Olha, ainda não ficou muito claro para mim o que você disse sobre a passagem de parâmetros em Java. Fiz um exemplo com uma matriz, e a matriz mesmo foi alterada. Quem disse isso foi um usuário aqui da lista, que no momento não lembro o nome dele. Como pode ser? Veja o código:
public class Passagem extends Object {
Object names[][] = new Object[1][2];
public Passagem(){
names[0][0] = "Lincolm"; names[0][1] = "Ferreira"; objects(names);
for(int x=0; x<=names.length - 1; x++){ for(int y=0; y<=names[x].length - 1; y++){ System.out.println(names[x][y]); } }
}
public static void main(String args[]){
Passagem ps = new Passagem();
}
public void objects(Object[][] n){
n[0][1] = "Aguiar";
}
}
Se comentar a chamada de objects(names) o resultado será: Lincolm Ferreira
No entanto, se remover os comentários a saída será: Lincolm Aguiar
Sinceramente, poderia me explicar.
Lincolm Ferreira de Aguiar WebMaster - QueroProgramar [EMAIL PROTECTED]
www.geocities.com/lincolmf
----- Original Message ----- From: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, January 28, 2002 8:03 PM Subject: RE: RES: [java-list] Como é feita a passagem de parâmetros em Java?
Quer ter seu próprio endereço na Internet? Garanta já o seu e ainda ganhe cinco e-mails personalizados. DomíniosBOL - http://dominios.bol.com.br
Amigos,
Como esse assunto está sendo bastante discutido, vou me meter no meio também e tentar esclarecer... O Java trata a passagem de parâmetros de forma diferente para tipos primitivos e objetos, mas sempre é passada por valor. Funciona mais ou menos assim (vou usar o exemplo do curso de Java da Sun, que fiz a semana passada):
Se você passa um tipo primitivo para um método assim: ... int i = 10; this.alteraValor(i) System.out.print(i) // Imprime o valor 10 ...
alteraValor(int j){ j = 15; } O que acontece? O Java entrega uma cópia do conteúdo de i para o método. S&oac
ute; que o conteúdo de i é igual a 10. Já se fizermos a mesma coisa com um objeto, vejam só:
... MyDate data = "new" MyDate("28/01/2002"); this.alteraValor(data); System.out.print(data); // Imprime o valor "28/01/2002"; this.alteraValor2(data); System.out.print(data); // Imprime o valor "28/02/2002"; ...
alteraValor(MyDate t){ t = new MyDate("31/07/2002"); }
alteraValor2(MyDate t){ t.setMes("02"); }
Porquê no primeiro método o valor não se alterou, mas no segundo sim? Funciona da mesma maneira que a passagem de um tipo primitivo. O conteúdo da variável data não é o objeto MyDate, e sim o endereço da memória onde está o objeto MyDate. E, da mesma maneira como acontece com o tipo primitivo, esse valor (endereço do objeto) não pode ser alterado (tentamos alterar essa referência com o comando
new MyDate). Já o conteúdo do objeto pode ser alterado tranqüilamente, pois ele fica em outra parte da memória.
Quaisquer dúvidas, perguntem....
[]
Fábio Jorge Corrêa Citibank e-Business Solutions Phone: 55 11 3457.0675 Fax: 55 11 3457.0652 [EMAIL PROTECTED]
-----Original Message----- From: sven [mailto:[EMAIL PROTECTED]] Sent: sexta-feira, 28 de dezembro de 2001 12:51 To: java-list Cc: sven Subject: Re: RES: [java-list] Como é feita a passasgem de parâmetros em Java?
Um bom engano...
Em Java, parametros são passados por referencia, mas dentro da função uma copia é usado.
ANDRE MOURA BARRETO wrote:
Vc está equivocado. Java não possue passagem de Parâmetro por referência. Somente por valor, ou seja, uma cópia é passada.
-----Mensagem original----- De: Adalberto Zanata [Forum] [ mailto:[EMAIL PROTECTED]] Enviada em: Thursday, January 24, 2002 8:16 PM Para: [EMAIL PROTECTED] Assunto: Re: [java-list] Como é feita a passasgem de parâmetros em Java?
Adalberto Zanata [ [EMAIL PROTECTED]] [ http://www.espacoreverso.com.br/a.zanata]
----
- Original Message ----- From: "Paulo Henrique Castro" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Thursday, January 24, 2002 11:26 AM Subject: Re: [java-list] Como é feita a passasgem de parâmetros em Java?
Existe uma maneira de diferenciar as passagens de parâmetros em Java, por valor e por referência?
Ateh onde sei a passagem de parametros em Java eh somente por referencia!!
[]s
PH
-- "Live fast, die old, and make very sure everyone knows you were there." - Alan Cox
------------------------------ 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] ----------------------------------------- --------------------------------
------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usu&aa
cute;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] ------------------------------------------------------------------ -------
------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://w
ww.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm para sair da lista: envie email para [EMAIL PROTECTED] ------------------------------------------------------------------ -------
-- "'You guys (at Microsoft) still don't get it,' because it's sort of Java with reliability, productivity and security deleted." James Gosling
------------------------------ 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 historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -------------------------------------------------------------------------
--
"'You guys (at Microsoft) still don't get it,'
because it's sort of Java with reliability, productivity and security deleted."
James Gosling
|