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

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

Tá bonito. [=

[quote=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[/quote]
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.

[quote=Rodrigo Sasaki][quote=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[/quote]
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.[/quote]

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?

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

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.

[quote=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?
[/quote]
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:[code]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");
}

}[/code]

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

falow

Obrigado a todos pelas respostas! Foram de grande ajuda!

Wilson

[quote=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.[/quote]

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.