Tenho uma dúvida que talvez seja um pouco “boba”, já utilizei em várias máterias e trabalhos da faculdade uma instancia de uma classe que de inicio já recebe um valor, por exemplo:
tenho a classe NO, e uma classe FilaCircular …
para instanciar um objeto de NO na FilaCircular utilizo da seguinte forma:
NO x = this.inicio; // inicio é um atributo da FilaCircular.
Até ai tudo bem, a dúvida surge pois estou lendo um livro, e o mesmo fala que a JVM só aloca uma parte da memoria quando acha a palavra NEW, como que ela reage se quanto instanciamos um objeto, já é passado um parametro ? da mesma forma NO x = new NO() ?
Se você só passa a referênciaNO x = this.inicioEle somente aponta a variável x para o objeto que já está na memória, sendo referenciado por inicio.
paulohms
digaoneves,
No caso então, o objeto está sendo instanciado nessa própria linha ?
No x = this.inicio ?
Vlw !
Margel_Douglas
Noinicio=newNO();//AQUI ESTA SENDO INSTANCIADO O NONox=inicio;//A VARIAVEL 'x' ESTA APENAS APONTANDO PARA 'inicio'//TODA ALTERAÇÃO EM 'x' VAI ESTAR ALTERANDO 'inicio'//EXPERIMENTO FAZER ISSO: x.setValor(10);inicio.setValor(15);System.out.println("x:"+x.getValor());System.out.println("inicio:"+inicio.getValor());//VC VAI VER QUE VAI SER LISTADO A MESMA COISA, O VALOR 15
paulohms
Margel Douglas,
A questão é que o inicio não é uma instancia de NO, e sim um atributo da classe
public class Teste{
private NO inicio;
public void MetodoTeste(){
NO x = this.inicio;
}
Na verdade é só uma dúvida, pois se mandar imprimir ou manipular dados na instancia local do método, funciona normal, só queria saber como que a JVM reage, pois conforme eu falei, o livro que estou lendo diz que a JVM encontra a palavra NEW que ela instancia o objeto da classe, e nesse caso não tem NEW em lugar nenhum.. rsrs
Vlw
Margel_Douglas
no seu exemplo, ‘inicio’ é um atributo do tipo NO, e esta NULO até que seja instanciado com new NO()
tanto ‘x’ como ‘inicio’ são nulos, e se vc tentar acessar qualquer método deles(que não seja estático),
vai ser lançado uma exceção de ponteiro nulo (NullPointerException)
a menos que vc tenha dessa forma:
privateNOinicio=newNO();
ai toda instancia da classe Teste vai ter um atributo ‘NO inicio’ já instanciado, e o ‘x’ recebendo ‘inicio’ vai seguir a mesma regra de citei antes.