RE: [java-list] Java: Passagem por valor ou referencia?

2001-10-04 Por tôpico Marcos Guedes

  Veja bem:
  Na Stack ficam os ponteiros que apontam para os
objetos que estão na "heap". Não é que Java não tenha
ponteiros, o lance é que vc não pode ter acesso a
eles.


 --- [EMAIL PROTECTED] escreveu: >
Pessoal,
> 
> Eu acho um pouco falacioso chamar de "passagem por
> referência" esse tipo de
> coisa. Como Java não tem ponteiros, não podemos
> acessar o conteúdo das
> referências utilizadas como fazíamos em C. Assim,
> quando passamos um objeto
> como parâmetro, estamos passando na verdade a
> referência ao objeto, e é
> passado uma cópia dessa referência. Se a passagem
> fosse por referência, não
> haveria essa cópia. Tudo bem que aí teremos duas
> referências para o mesmo
> objeto, mas enfim, a passagem é por valor.
> 
> Apenas para citar uma referência, um livro de
> certificação bastante
> utilizado, "COMPLETE JAVA 2 CERTIFICATION STUDY
> GUIDE", do Simon Roberts,
> Phillip Heller e Ernest Michael tem um capítulo que
> fala sobre isso. Eles
> afirmam categoricamente: Não existe passagem por
> referência em Java. Somente
> por valor.
> 
> No stress,
> 
> Abraços,
> Denard
> 


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




RE: [java-list] Java: Passagem por valor ou referencia?

2001-10-04 Por tôpico Denard . Soares
Title: RE: [java-list] Java: Passagem por valor ou referencia?





Pessoal,


Eu acho um pouco falacioso chamar de "passagem por referência" esse tipo de coisa. Como Java não tem ponteiros, não podemos acessar o conteúdo das referências utilizadas como fazíamos em C. Assim, quando passamos um objeto como parâmetro, estamos passando na verdade a referência ao objeto, e é passado uma cópia dessa referência. Se a passagem fosse por referência, não haveria essa cópia. Tudo bem que aí teremos duas referências para o mesmo objeto, mas enfim, a passagem é por valor.

Apenas para citar uma referência, um livro de certificação bastante utilizado, "COMPLETE JAVA 2 CERTIFICATION STUDY GUIDE", do Simon Roberts, Phillip Heller e Ernest Michael tem um capítulo que fala sobre isso. Eles afirmam categoricamente: Não existe passagem por referência em Java. Somente por valor.

No stress,


Abraços,
Denard


-Original Message-
From: Alysson Neves Bessani [mailto:[EMAIL PROTECTED]] 
Sent: quarta-feira, 3 de outubro de 2001 16:18
To: [EMAIL PROTECTED]
Subject: [java-list] Java: Passagem por valor ou referencia?



    Bom, aqui acho q cabe uma esclarecida: Os tipos basicos em java
sao passados por valor. Assim quando um tipo basico eh passado por
parametro ele eh COPIADO para dentro do metodo q vai ser executado. Os
objetos, como nao sao manipulados diretamente na pilha da maquina virtual
sao passados sempre por "referencia". Isto porque a pilha trata
referencias a objetos, e uma vez essas passadas como parametro, elas (as
referencias) sao COPIADAS pra dentro do metodo. Assim a referencia copiada
continua "apontando" pro objeto antigo e qualquer alteracao neste eh
valida dentro e fora do metodo.


    Abracos.


On Wed, 3 Oct 2001 [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 maior fonte de bugs, falhas 
> de segurança, vírus e dores de cabeça para os programadores C.
> 
> - Java não possui Forech: loop para varrer arrays e coleções
> 
> Dê uma olhada na API Collections. Vc vai ficar impressionado com a 
> 

[java-list] Java: Passagem por valor ou referencia?

2001-10-03 Por tôpico Alysson Neves Bessani


Bom, aqui acho q cabe uma esclarecida: Os tipos basicos em java
sao passados por valor. Assim quando um tipo basico eh passado por
parametro ele eh COPIADO para dentro do metodo q vai ser executado. Os
objetos, como nao sao manipulados diretamente na pilha da maquina virtual
sao passados sempre por "referencia". Isto porque a pilha trata
referencias a objetos, e uma vez essas passadas como parametro, elas (as
referencias) sao COPIADAS pra dentro do metodo. Assim a referencia copiada
continua "apontando" pro objeto antigo e qualquer alteracao neste eh
valida dentro e fora do metodo.

Abracos.

On Wed, 3 Oct 2001 [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 maior fonte de bugs, falhas 
> de segurança, vírus e dores de cabeça para os programadores C.
> 
> - Java não possui Forech: loop para varrer arrays e coleções
> 
> Dê uma olhada na API Collections. Vc vai ficar impressionado com a 
> qualidade, eficiência e performance dessa API.
> 
> - Java não possui Campos readonly.
> 
> Lógico que possui. Basta utilizar final.
> 
> - Java não possui Documentação integrada em XML.
> 
> Javadoc serve exatamente para isso que vc sugere como vantagem do C#.
> 
> - Java não possui Controle sobre "estouro de faixa" numérica
> 
> Lógico que possui. Pelo amor de Deus...
> 
> - Java não possui Diretivas de compilação condicional (#ifdef etc)
> 
> Não precisa pois utilizando o final boolean DEBUG = false; o compilador 
> automaticamente otimiza o código compilado retirando esse código morto.
> 
> - Java não possui Padronização por algum organismo internacional
> 
> ??? Já ouviu falar em Enterprise JavaBeans, Servlet, JSP, etc. Diversas 
> empresas adotaram essas especificações, independentemente de imposições da 
> Sun. Apenas a Máquina Virtual da microsoft não era compatível com todas as 
> demais, daí a derrota da Microsoft na justiça.
> 
> - Java não Chama APIs do Windows e DLLs
> 
> Lógico que chama via JNI.
> 
> Como voce percebe pelos meus comentários acima. Vc definitivamente não é a 
> pessoa certa para fazer essa comparação entre C# e Java. A não ser que vc 
> seja um homem de marketing e não da área de TI.
> 
> --
> Sergio Oliveira Jr.
> Sun Certified Java Programmer
> Desenvolvedor e Consultor Java
> Empresa SmartJava
> --
> 
> 
> 
> >Fro