não há objetos, apenas acessarei a classe pessoa atravez de uma variavel
[/quote]
Como foi dito, aqui existe um objeto Pessoa mas ele é nulo, este objeto está atribuido a variável teste
Se você tentar acessar teste.variavelDePessoa irá receber uma NullPointException
Aqui você está instanciando o objeto, ou seja, você está chamando o construtor de Pessoa sem argumentos, e atribuindo os valores default para as variáveis de instância
Por exemplo, se Pessoa tiver uma variável do tipo primitiva int quando você chamar o construtor - fazendo new Pessoa() - a variável será automaticamente inicializada com 0 integer
[quote=mokuro]
mas
das duas maneiras, eu consigo dar os set/getters e usar os metodos da classe, entao quando devo usar cada uma?[/quote]
Se você for acessar uma variável antes de chamar o construtor irá receber a excessão que falei acima
Variável do tipo Pessoa, mas sem um objeto… pode até usar os get() e set() da variável, mas na hora de executar vais receber uma NullPointerException… Me corrijam se eu estiver errado…
Public pessoa teste;
Isso aqui não é nada… Public não é um modificador de acesso… deve ser public (tudo minúsculo)
Pessoa teste = new Pessoa();
Aqui vc criou a variável do tipo pessoa e atribuiu a ele um novo Objeto Pessoa, nada de Exceptions e felicidades para a vida toda… rsrsrs
Não podes usar métodos de instância nem acessar a variáveis de instância porque a variável não foi inicializada, não podes fazer rigorosamente nada com a variável sem lhe atribuires um conteúdo, que neste caso específico seria um objecto da classe Pessoa.
Respondendo á tua pergunta: Deves usar sempre a segunda. Podes usar a primeira também, mas antes de tentares acessar aos seus métodos e atributos deves inicializar a variável. Algo como isto
Exemplo:
Pessoa p;
//......
p = new Pessoa();
p.setName("Fábio");
p.setIdade("19");
p.getAltura();
//etc etc..
Digamos que no segundo caso estás iniciando um objecto anónimo da classe Tela. E basicamente é isso, apesar de teres acesso aos “conteúdos” do objecto criado, não os vais conseguir manipular facilmente porque não tens nenhuma variável que o referencie.