[RESOLVIDO] Inicialização de variáveis de instância

9 respostas
ECO2004

Poderiam verificar o que escrevo abaixo?

Se eu não declaro um construtor, o compilador me fornece um. Nesse construtor padrão fornecido, as variáveis são inicializadas em um estado consistente automaticamente (0, false e null, dependendo de seu tipo).
Se eu forneço um construtor, o compilador não me fornece um. Nesse caso, eu tenho que inicializar as variáveis de instância e colocá-las em um estado consistente, ou seja, atribuir valores 0, false, null…às mesmas, despendendo de seu tipo. Se eu não o fizer, as variáveis podem ficar em estado inconsistente.

Me corrijam, por favor, caso eu tenha escrito algo errado.

Wilson

9 Respostas

Hebert_Coelho

Tá bonito. [=

Rodrigo_Sasaki

ECO2004:
Poderiam verificar o que escrevo abaixo?

Se eu não declaro um construtor, o compilador me fornece um. Nesse construtor padrão fornecido, as variáveis são inicializadas em um estado consistente automaticamente (0, false e null, dependendo de seu tipo).
Se eu forneço um construtor, o compilador não me fornece um. Nesse caso, eu tenho que inicializar as variáveis de instância e colocá-las em um estado consistente, ou seja, atribuir valores 0, false, null…às mesmas, despendendo de seu tipo. Se eu não o fizer, as variáveis podem ficar em estado inconsistente.

Me corrijam, por favor, caso eu tenha escrito algo errado.

Wilson


Você estava certo até a hora de falar sobre o construtor que você mesmo definiu.

Você definindo um construtor ou não, as variáveis terão seu valor padrão.

Pode testar, defina um construtor, que não atribui nada a nenhum atributo, e depois imprima os atributos do objeto, verá que os valores padrão serão impressos normalmente.

ECO2004

Rodrigo Sasaki:
ECO2004:
Poderiam verificar o que escrevo abaixo?

Se eu não declaro um construtor, o compilador me fornece um. Nesse construtor padrão fornecido, as variáveis são inicializadas em um estado consistente automaticamente (0, false e null, dependendo de seu tipo).
Se eu forneço um construtor, o compilador não me fornece um. Nesse caso, eu tenho que inicializar as variáveis de instância e colocá-las em um estado consistente, ou seja, atribuir valores 0, false, null…às mesmas, despendendo de seu tipo. Se eu não o fizer, as variáveis podem ficar em estado inconsistente.

Me corrijam, por favor, caso eu tenha escrito algo errado.

Wilson


Você estava certo até a hora de falar sobre o construtor que você mesmo definiu.

Você definindo um construtor ou não, as variáveis terão seu valor padrão.

Pode testar, defina um construtor, que não atribui nada a nenhum atributo, e depois imprima os atributos do objeto, verá que os valores padrão serão impressos normalmente.

O construtor é usado para inicializar os objetos. Se eu não coloco nada dentro do construtor que eu forneci, quando essas variáveis de instâncias estão sendo inicializadas com os valores padrão?

asandrob

“…às mesmas, despendendo de seu tipo…”
Veja bem, você escreveu “despendendo”, acredito que seja “dependendo”…

nel

Estamos falando em objetos, logo, todos possuem ao menos um construtor.
Mesmo que você não inicialize nada no construtor de um objeto criado por você, os objetos que existam na instância do objeto em questão assumirão valores default.
Assim como todas as classes são filhas de Object.

Rodrigo_Sasaki
ECO2004:
O construtor é usado para inicializar os objetos. Se eu não coloco nada dentro do construtor que eu forneci, quando essas variáveis de instâncias estão sendo inicializadas com os valores padrão?
Elas são inicializadas antes mesmo da execução do construtor, pois durante sua execução as variáveis já tem o valor padrão. Execute o seguinte teste:
public class Teste{
	
	private String str;
	private int num;
	
	public Teste(String text){
		System.out.println(str);
		System.out.println(num);
	}

	public static void main(String[] args){
		new Teste("bla");
	}

}
marcelo.silva.java

independente de vc criar um contrutor ou não… as variaveis de instancia sempre vai ter valor padrão,

falow

ECO2004

Obrigado a todos pelas respostas! Foram de grande ajuda!

Wilson

V

ECO2004:
Estamos falando em objetos, logo, todos possuem ao menos um construtor.
Mesmo que você não inicialize nada no construtor de um objeto criado por você, os objetos que existam na instância do objeto em questão assumirão valores default.
Assim como todas as classes são filhas de Object.

Completando o que o nel falou, todo construtor faz uma chamada ao construtor de sua superclasse (direta/indiretamente) e mesmo que você não defina um valor default a uma variável no construtor de sua classe, ele será definido quando o construtor de Object for chamado. Como foi percebido no exemplo que Rodrigo Sasaki postou.

Criado 16 de janeiro de 2013
Ultima resposta 16 de jan. de 2013
Respostas 9
Participantes 7