�l�,
acho que qdo se fala a respeito de Java existe uma pequena divergencia .....


Digo isto pois fiz quando o curso na Sun e tive esta mesma duvida.... (duvida normal de quem ja desenvolveu em C#)......

O que � dito em Java que tudo � passado por valor (by Value), significa que estamos passando sempre o valor de uma stack!!!!

Qdo criamos instanciamos uma class ( Class v1 = new Class()), estamos alocando um espa�o em mem�ria e mais um pedacinho na chamada stack (local onde temos a variavel e o end. de memoria onde o objeto sera armazenado)....

Qdo criamos um tipo primitivo, o mesmo ficara somente na stack, ou seja, a variavel e seu valor ser�o alocados

Logo quando dizemos que tudo � pass by value � por que estamos passando o valor da stack, ou seja, se passamos um tipo primitivo, estaremos passando (By Value) o pr�prio valor e este n�o sofrer� altera��o..... mas qdo passamos um objeto por referencia estaremos passando ainda By Value, mas desta vez, n�o estaremos passando o conteudo do objeto e sim o valor da referencia deste objeto, ou seja, o endereco de mem�ria onde o objeto esta localizado.... o que significa que as modificacoes refletirao no objeto passado (seria o equivalente a passar um parametro como ^p1, ou seja por referencia)....

N�o sei se ficou confuso mas foi a forma que achei para tentar explicar....

[ ]s



From: "Leonardo Hartleben Reinehr" <[EMAIL PROTECTED]>
Reply-To: [EMAIL PROTECTED]
To: <[EMAIL PROTECTED]>
Subject: RES: [java-list] Pergunta for Dummies
Date: Wed, 21 May 2003 16:13:19 -0300


Ol�,


> Ainda acredito que quando a passagem for de objetos ser� por refer�ncia
> e n�o por valor...

Em Java, par�metros s�o sempre passados por valor, independente se o par�metro � um objeto ou um tipo primitivo. Fa�a o teste a seguir que voc� vai comprovar isso:

public class Teste {
    public static void main(String[] args) {
        String str = "Valor 1";
        teste(str);
        System.out.println(str);
    }

    public static void teste(String s) {
        s = "Valor 2";
    }
}

O texto que ser� impresso � "Valor 1".

Veja em http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html, no item "Pass by Value", que l� explica direitinho o que acontece na passagem de par�metros, e porque os casos que voc� colocou funcionam. Aqui na lista mesmo, h� algum tempo, essa d�vida apareceu e houve bastante debate, d� uma olhada no hist�rico.

Um abra�o,
Leonardo

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


_________________________________________________________________ MSN Hotmail, o maior webmail do Brasil. http://www.hotmail.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
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED] -------------------------------------------------------------------------




Responder a