Sven,
 
Eu concordo contigo. Em java o que o parâmetro é uma referência para um objeto. Mas, esta referência é passada por valor. Logo, a passagem de parâmetros em java é uma passagem por valor.
 
É um pequeno detalhe conceitual com grandes implicancias.
 
Isso permite que java não quebre o encapsulamento. Por que uma String é um objeto imutável? Há razões de performance, mas o principal é para não quebrar o encapsulamento.
 
Se String fosse mutável, você poderia alterar um nome de um objeto qualquer com um simples getName().
 
Se java permitisse passagem de parâmetros por referência, também seria possível quebrar o encapsulamento, pois o método abaixo funcionaria:
 
void method (String s)
{
    s = "nova string";
}
 
abraços

Jorge
 
 
ps: Spara fechar o assunto, e ficarmos todos contentes: parâmetro em java é uma referência para um objeto. Mas, esta referência é passada por valor. Logo, a passagem de parâmetros em java é uma passagem por valor.
 
-----Original Message-----
From: Sven van ´t Veer [mailto:[EMAIL PROTECTED]]
Sent: segunda-feira, 4 de fevereiro de 2002 14:55
To: [EMAIL PROTECTED]
Subject: Re: RE: Re: RES: [java-list] Como é feita a passasgem de parâmetros em Java?

Veja bem,

O que é uma referencia ?? A referencia é um ponteiro para um local na memoria. Em java não existem ponteiros porém o valor do ponteiro (um int em C/C++) é passado a diferenca de Java para C/C++ é exatamente essa. Para mim e milhares de ex-programadores passar por valor é passar a classe inteira:
void alterString(String s)
em vez do endereço (referencia):
void alterString(String *s)
O que acontece em java é parecida com:
String *s;
int pointer = s;
void alterString(int pointer){
String *t;
t = pointer;

maravilha então estou passando um pointer por valor .... mas estou passando a referencia ou não ???

Jorge Martins wrote:
[EMAIL PROTECTED] type="cite">
Sven,
 
Você está equivocado.
 
A passagem de parâmetros em java é por valor. Tanto como objeto ou tipos primitivos.
 
Em caso, de objeto, o parâmetro é uma referência, mas esta referência é PASSADA POR VALOR. Verifique a documentatação. Esta sutileza pode ser observada pelo método.
 
Olhe a explicação do autor de Pratical Java.
 

developerWorks: What are a couple of the most common mistakes developers make using Java? What problems does this cause, and how can you fix them?

Haggar: This could be any number of things, but I will mention two. First, Java passes all parameters by value. It is often written or said that Java passes parameters by reference. Because Java supports object references the assumption is that Java passes parameters by reference. Actually, Java passes object references by value. This problem most often confuses C++ programmers when they first start programming in Java.

The second involves equality in Java. Programmers new to Java are often not sure if they should use the == operator or the equals method to test for equality. The bottom line is to use the == operator when testing if two primitive types have the same value or if two object references refer to the same object, and to use the equals method when comparing if two objects are equal based on their attributes (also called semantic equality). These issues are covered in my book.

abraços
 
Jorge 
 
 -----Original Message-----
From: Sven van ´t Veer [mailto:[EMAIL PROTECTED]]
Sent: sábado, 29 de dezembro de 2001 08:00
To: [EMAIL PROTECTED]
Subject: Re: Re: RES: [java-list] Como é feita a passasgem de parâmetros em Java?

Isso não é verdade!!!!!!!!!!!!!!!!

Java faz passagem de parametros POR REFERENCIA e NÂO POR VALOR. Aparentemente use passagem por valor pois alterando o valor do variavel dentro do metodo para qual foi passado não altere o valor fora do metodo. ISSO È POR QUE È CRIADO UMA COPIA |DENTRO DO METODO...

Somente primitivos são passados por valor.

Cada invocação do metodo tem os proprios instancias dos parametros igual a cada variavel local do metodo.


Isso é uma dos possiveis perguntas na certificação !!!

[EMAIL PROTECTED] wrote:
[EMAIL PROTECTED] type="cite">
Caros 'Javalis',
Voces tem razão sobre o Java aceitar passagem de parâmetro somente por
valor. COM UMA EXCESSÃO : SE PASSAR UMA MATRIZ COMO PARÂMETRO, O JAVA FAZ
PASSAGEM POR REFERÊNCIA. IQUALZINHO A SUA LINGUAGEM MÃE, O FABULOSO C !!!
(TESTEM!!!)
Saudações, Luis.

-- Mensagem original --

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< /a> - 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á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]
-------------------------------------------------------------------------





------------------------------------------
Use o melhor sistema de busca da Internet
Radar UOL - http://www.radaruol.com.br




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


-- 
"'You guys (at Microsoft) still don't get it,'
because it's sort of Java with reliability, productivity and security deleted."

James Gosling


-- 
"'You guys (at Microsoft) still don't get it,' 
because it's sort of Java with reliability, productivity and security deleted."

					James Gosling

Responder a