| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/04/2005 21:48:04
|
rodrigo.achilles
JavaGuru
![[Avatar]](/images/avatar/0e189c35adab992d274c294586143ec9.png)
Membro desde: 18/11/2004 20:43:04
Mensagens: 214
Localização: Rio de Janeiro
Offline
|
Olá pessoal,
gostaria de implementar uma estrutura com ponteiro em Java:
+/- assim...
alguém tem idéia para implementar esse tipo de ponteiro.
Obrigado
|
-----------------------------------------------------------------------
Java é sinistro!
Att.
Rodrigo Achilles Pereira |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/04/2005 21:50:56
|
fmeyer
Moderador
Membro desde: 22/02/2005 17:26:29
Mensagens: 1583
Localização: Sao Paulo
Offline
|
AAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
MULEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEQUE ....
Java nao trabalha explicitamente com ponteiros ....
oque voce pode fazer é criar uma classe com esses atributos ... e ao inves de ponteiros voce REFERENCIA uma classe ao seu objeto.
Ps. Scottys0 com arrepios lembrando de alocação de memoria em C++
This message was edited 1 time. Last update was at 18/04/2005 21:52:32
|
Fernando Meyer http://fernandomeyer.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/04/2005 22:01:32
|
rodrigo.achilles
JavaGuru
![[Avatar]](/images/avatar/0e189c35adab992d274c294586143ec9.png)
Membro desde: 18/11/2004 20:43:04
Mensagens: 214
Localização: Rio de Janeiro
Offline
|
Ah, saquei...
É lógico, que ridículo, valeu mesmo scottys0. Que burro eu sou.
É simples assim!
PS: Desculpa ter te lembrado esses tempos difíceis.
|
-----------------------------------------------------------------------
Java é sinistro!
Att.
Rodrigo Achilles Pereira |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/04/2005 22:16:38
|
LuizAvila
JavaTeenager
![[Avatar]](/images/avatar/5c3b99e8f92532e5ad1556e53ceea00c.png)
Membro desde: 07/11/2004 22:35:12
Mensagens: 189
Localização: Florianópolis
Offline
|
rodrigo.achilles wrote:Ah, saquei...
É lógico, que ridículo, valeu mesmo scottys0. Que burro eu sou.
É simples assim!
PS: Desculpa ter te lembrado esses tempos difíceis.
ahuuuuummmmmmm
Repita este mantra:
Java não é C++; Java não é C++; Java não é C++; Java não é C++;
ahuuuuummmmmmm
Eleve seu espírito, tire todas as impurezas de acesso direto a memória
ahuuuuummmmmmm
|
Luiz Ávila
GU Java SC
http://www.gujava.org.br
http://www.baixoacoplamento.blog.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/04/2005 22:24:03
|
fmeyer
Moderador
Membro desde: 22/02/2005 17:26:29
Mensagens: 1583
Localização: Sao Paulo
Offline
|
LuizAvila wrote:
rodrigo.achilles wrote:Ah, saquei...
É lógico, que ridículo, valeu mesmo scottys0. Que burro eu sou.
É simples assim!
PS: Desculpa ter te lembrado esses tempos difíceis.
ahuuuuummmmmmm
Repita este mantra:
Java não é C++; Java não é C++; Java não é C++; Java não é C++;
ahuuuuummmmmmm
Eleve seu espírito, tire todas as impurezas de acesso direto a memória
ahuuuuummmmmmm
A nao fala mau de C++ pq ... tem muita coisa feito nele q funciona bem pra caramba ...
O negocio é nao misturar as coisas ...
uma das coisas que os caras amam fazer em provas de certificação java eh confundir o cara com C++, pelo menos é assim com SCJP ... isso por que o objetivo do teste é ver se voce esta preparado para "as situações do mundo real" ... então se o Eclipse/Netbeans/IntelliJ ou outra IDE tentar fazer voce digitar codigos em C++ ... voce grita :
" EU RENUNCIO EM NOME DE JESUS .... "
|
Fernando Meyer http://fernandomeyer.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/04/2005 22:56:59
|
saoj
JWizard
![[Avatar]](/images/avatar/2e7ceec8361275c4e31fee5fe422740b.png)
Membro desde: 09/03/2004 23:34:46
Mensagens: 2667
Localização: Chicago, EUA
Offline
|
Java tem ponteiro sim, só que aqui o nome é referencia. Vc só não tem acesso direto ao endereço de memória que ele representa, e por isso vc não pode manipular esse endereço.
A sun pode, através da class sun.misc.Unsafe.
|
Sergio A Oliveira Jr. - saoj
ExperiMENTA:
Mentawai = http://www.mentaframework.org - Full-stack Java Web Framework com Configuracão Programática
MentaQueue = http://mentaqueue.soliveirajr.com - Queue de alta-performance.
MentaLog = http://mentalog.soliveirajr.com - Non-intrusive, fast, garbage-less, colored and straightforward logging
MentaBean = http://mentabean.soliveirajr.com - Tiny ORM with SQL Builder
MentaRegex = http://mentaregex.soliveirajr.com - Perl-style regex for Java.
MentaContainer = http://mentacontainer.soliveirajr.com - Straightforward IoC, DI e Auto-Wiring
Space4J = http://www.space4j.org - Banco-de-dados de Objetos em Memória
Options-Lib = https://github.com/saoj/options-lib - Ruby classes para ter acesso as opcoes do Yahoo Finance
Selleto = http://www.selleto.com.br
Flipinion = http://www.flipinion.com
Kawai = http://www.kawaiwiki.org
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/04/2005 23:20:22
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Sérgio, sempre que vejo alguém dizer que Java tem ponteiro eu me lembro do tempo em que programava em Fortran. Naquela época a gente fazia na mão todo o endereçamento da memória. A gente alocava um array de uma dimensão com toda a memória livre da máquina e ficava movendo da memória para o disco e vice-versa. Fortran não tinha ponteiros mas a gente criava os ponteiros de endereçamento indireto e fazia aritmética com estes ponteiros.
Muitos anos depois inventaram o C e então pudemos usar os ponteiros com suporte dentro da linguagem. É óbvio que se a gente podia acessar uma determinada posição da memória então se podia acessar a tal posição acrescida de uma variável. Ou seja, a linguagem ter ponteiro significa que ela tem suporte a aritmética de ponteiro.
Para mim (e para todos os livros básicos que já li de Java), nossa linguagem favorita não tem suporte a ponteiros. O que a API faz lá dentro de modo nativo ou o fato de passar referências de forma alguma significa que Java tem ponteiros.
Não é a primeira vez aqui no GUJ que sou obrigado a me manifestar deste modo. Java não tem ponteiros e esta é uma das principais vantagens do Java.
Mas se você conseguir, me mostre um exemplo de uso de ponteiros em Java sem ser do modo que eu falei acima que fazia com Fortran. Mostre suporte da linguagem a aritmética com ponteiros.
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/04/2005 00:03:05
|
saoj
JWizard
![[Avatar]](/images/avatar/2e7ceec8361275c4e31fee5fe422740b.png)
Membro desde: 09/03/2004 23:34:46
Mensagens: 2667
Localização: Chicago, EUA
Offline
|
Luca wrote:Mas se você conseguir, me mostre um exemplo de uso de ponteiros em Java sem ser do modo que eu falei acima que fazia com Fortran. Mostre suporte da linguagem a aritmética com ponteiros.
Não dá para fazer aritimética com ponteiros, nem para perguntar qual é o endereço físico de um ponteiro em Java. Foi o que eu falei.
Estou usando a palavra ponteiro como sinônimo de referencia. Talvez isso não seja legal, pois o cara confunde com os ponteiros do C. Deve ser por isso que o nome em Java é referência.
Posso estar errado. Estou apenas levantando a bola para discussão, mas penso que em Java há ponteiros, só que eles são totalmente protegidos do programador. Não temos acesso a eles.
Mas eles estão lá. Existem! Tanto existem que existe uma classe sun.misc.Unsafe que te permite acessar o endereço físico de uma referencia em Java e fazer artimética com ela. Acredite se quiser. Mas só os pacotes do core da linguagem podem fazer uso dessa classe. Ela tem funções que te retornam o endereço físico de memória de um objeto, acredite se quiser!
OBS: O "acredite se quiser" aqui refere-se aquela série famosa da televisão onde o apresentador mostrava casos e situações bizarras e no final terminava com a frase: "Acredite se quiser!". Ou seja, é apenas para enfatizar que a coisa é estranha mesmo!
This message was edited 3 times. Last update was at 19/04/2005 00:33:19
|
Sergio A Oliveira Jr. - saoj
ExperiMENTA:
Mentawai = http://www.mentaframework.org - Full-stack Java Web Framework com Configuracão Programática
MentaQueue = http://mentaqueue.soliveirajr.com - Queue de alta-performance.
MentaLog = http://mentalog.soliveirajr.com - Non-intrusive, fast, garbage-less, colored and straightforward logging
MentaBean = http://mentabean.soliveirajr.com - Tiny ORM with SQL Builder
MentaRegex = http://mentaregex.soliveirajr.com - Perl-style regex for Java.
MentaContainer = http://mentacontainer.soliveirajr.com - Straightforward IoC, DI e Auto-Wiring
Space4J = http://www.space4j.org - Banco-de-dados de Objetos em Memória
Options-Lib = https://github.com/saoj/options-lib - Ruby classes para ter acesso as opcoes do Yahoo Finance
Selleto = http://www.selleto.com.br
Flipinion = http://www.flipinion.com
Kawai = http://www.kawaiwiki.org
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/04/2005 00:09:36
|
fmeyer
Moderador
Membro desde: 22/02/2005 17:26:29
Mensagens: 1583
Localização: Sao Paulo
Offline
|
Essa bagunca ai em baixo é ponteiro...
... não sei ,,, mas não consigo abstrair o conceito de ponteiro em java ... pois eu ainda não vi uma referencia que aponte para outra referencia e assim sucessivamente. Se existir ... alguem fale .
|
Fernando Meyer http://fernandomeyer.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/04/2005 00:21:57
|
saoj
JWizard
![[Avatar]](/images/avatar/2e7ceec8361275c4e31fee5fe422740b.png)
Membro desde: 09/03/2004 23:34:46
Mensagens: 2667
Localização: Chicago, EUA
Offline
|
Não sei se é a mesma coisa, mas Java tem lista encadeada não tem ??? (LinkedList).
Na verdade aí vc tem um objeto que aponta para outro que contém uma referencia para outro objeto do mesmo tipo, formando uma cadeia. Acho que não equivale ao que vc falou.
|
Sergio A Oliveira Jr. - saoj
ExperiMENTA:
Mentawai = http://www.mentaframework.org - Full-stack Java Web Framework com Configuracão Programática
MentaQueue = http://mentaqueue.soliveirajr.com - Queue de alta-performance.
MentaLog = http://mentalog.soliveirajr.com - Non-intrusive, fast, garbage-less, colored and straightforward logging
MentaBean = http://mentabean.soliveirajr.com - Tiny ORM with SQL Builder
MentaRegex = http://mentaregex.soliveirajr.com - Perl-style regex for Java.
MentaContainer = http://mentacontainer.soliveirajr.com - Straightforward IoC, DI e Auto-Wiring
Space4J = http://www.space4j.org - Banco-de-dados de Objetos em Memória
Options-Lib = https://github.com/saoj/options-lib - Ruby classes para ter acesso as opcoes do Yahoo Finance
Selleto = http://www.selleto.com.br
Flipinion = http://www.flipinion.com
Kawai = http://www.kawaiwiki.org
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/04/2005 00:23:19
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
saoj wrote: acredite se quiser!
Fortran tem arrays e tem índices dos arrays. Então quando se compila o fonte a linguagem gera uma aritmética em cima dos endereços dos índices porque assembler não tem arrays, somente tem aritmética direto sobre as posições de memória.
Estou fazendo esta comparação com uma linguagem que existe há mais de 40 anos para você ver que o que a linguagem de alto nível tem lá dentro para converter para linguagem de máquina não é uma facilidade da linguagem disponível ao programador.
Eu não tenho a menor idéia sobre como Java acessa as coisas nativas do sistema operacional porque não estão disponíveis para mim. E igualmente sigo afirmando que Java não disponibiliza ponteiros para uso do programador.
<editado>Editei para falar ao contrário: linguagem de máquina não tem estruturas de dados como arrays ou outros tipos (classes, struts, etc.), tem somente ponteiros. É assim que a gente programa em assembler.</editado>
[]s
Luca
This message was edited 1 time. Last update was at 19/04/2005 00:27:32
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/04/2005 00:32:15
|
fmeyer
Moderador
Membro desde: 22/02/2005 17:26:29
Mensagens: 1583
Localização: Sao Paulo
Offline
|
saoj wrote:Não sei se é a mesma coisa, mas Java tem lista encadeada não tem ??? (LinkedList).
Na verdade aí vc tem um objeto que aponta para outro que contém uma referencia para outro objeto do mesmo tipo, formando uma cadeia. Acho que não equivale ao que vc falou.
Ai voce esta falando de estrutura de dados ... em .. c++
estou falando de referencia pura ... exemplo, uma variavel que contenha o endereco de outra sucessivamente ate acessar um valor na heap;
|
Fernando Meyer http://fernandomeyer.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/04/2005 00:36:38
|
saoj
JWizard
![[Avatar]](/images/avatar/2e7ceec8361275c4e31fee5fe422740b.png)
Membro desde: 09/03/2004 23:34:46
Mensagens: 2667
Localização: Chicago, EUA
Offline
|
scottys0 wrote:
estou falando de referencia pura ... exemplo, uma variavel que contenha o endereco de outra sucessivamente ate acessar um valor na heap;
Sinistro !!! Acho que em Java não tem isso não, nem nas entranhas da VM, pois toda referencia aponta para um objeto, e todo objeto criado tem um header. Logo vc pode ter algo assim:
ponteiro -> header + ponteiro -> header + ponteiro, etc e tal....
ponteiro que aponta para outro ponteiro puro acho que não existe na especificação da VM mesmo...
This message was edited 1 time. Last update was at 19/04/2005 00:48:41
|
Sergio A Oliveira Jr. - saoj
ExperiMENTA:
Mentawai = http://www.mentaframework.org - Full-stack Java Web Framework com Configuracão Programática
MentaQueue = http://mentaqueue.soliveirajr.com - Queue de alta-performance.
MentaLog = http://mentalog.soliveirajr.com - Non-intrusive, fast, garbage-less, colored and straightforward logging
MentaBean = http://mentabean.soliveirajr.com - Tiny ORM with SQL Builder
MentaRegex = http://mentaregex.soliveirajr.com - Perl-style regex for Java.
MentaContainer = http://mentacontainer.soliveirajr.com - Straightforward IoC, DI e Auto-Wiring
Space4J = http://www.space4j.org - Banco-de-dados de Objetos em Memória
Options-Lib = https://github.com/saoj/options-lib - Ruby classes para ter acesso as opcoes do Yahoo Finance
Selleto = http://www.selleto.com.br
Flipinion = http://www.flipinion.com
Kawai = http://www.kawaiwiki.org
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/04/2005 00:50:02
|
fmeyer
Moderador
Membro desde: 22/02/2005 17:26:29
Mensagens: 1583
Localização: Sao Paulo
Offline
|
Procurei ate cair cabelo ... na especificação da linguagem e nao achei nada que falasse explicitamente de enderecamento e logica de acesso a heap... então ...
http://java.sun.com/docs/books/jls/second_edition/html/jIX.fm.html
touche
|
Fernando Meyer http://fernandomeyer.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/04/2005 02:18:19
|
Ironlynx
Moderador
![[Avatar]](/images/avatar/93d65641ff3f1586614cf2c1ad240b6c.jpg)
Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline
|
Estou usando a palavra ponteiro como sinônimo de referencia. Talvez isso não seja legal, pois o cara confunde com os ponteiros do C. Deve ser por isso que o nome em Java é referência.
Eu jah tinha postado isso aqui:
http://www.guj.com.br/posts/list/19722.java
Mas para ficar BEM claro a separação das coisas entre C,C++ e Java:
método em java(passagem por referência a objeto):
chamada ao método:
troca(ref,x,x+1);
função em C(passagem por referência por ponteiros):
chamada a função:
troca(&x,&y);
função em C++(passagem por referência):
chamada ao método:
troca(x,y);
int *x e int *y são os dois ponteiros que a função recebe como parâmetros.
O operador &(uppersign) é chamado de operador de endereços em C(que são passados aos ponteiros pela chamada da função).
Em C++,o operador & é o operador de referência(ele fica geralmente associado ao tipo da variável para se distinguir do operador de endereços de C) para as que forem passadas a função troca.
Ficou claro
|
Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/ |
|
|
 |
|
|