Métodos

Bem minha dúvida e sobre métodos construtores,bem todo classe tem um método construtor certo…?
quando se instancia um objeto da classe exemplo:

classe p = new classe()

neste caso o método construtor será padrão certo ele é ocultado pelo java
mais tem alguma diferença de fazer dessa forma

public class TesteL
{
	private int aux1;
	private int aux2
	private int aux3;
	
	
	public TesteL()
	{
		this.(0,0,0)
	}
}

pelo que eu sei o construtor padrão inicializa valores primitivos com o boolean com false e valores por referência com null, neste método que eu criei vai ser da mesma forma… qual vai ser sua diferença em relação ao construtor padrão…? no caso ele somente ira servir para tipos primitivos certos…?
gostaria de saber o que quer dizer “Iniciar variavel de instancia em um estado conscistente”???
o que é iniciar em um estado consistente…?

O construtor padrão teoricamente não faz nada… variaveis de instancia são inicializadas automaticamente independente do construtor padrão…

O construtor padrão parece com isso:

public NomeDaClasse(){ super(); }

A partir do momento que você insere um construtor na sua classe, o padrão não é mais criado… mas as variavies continuam sendo inicializadas automaticamente…

E não faz diferença se você deixa elas serem inicializadas ou inicializa na mão, se você colocar o valor padrão, atribuir 0 a um atributo int por exemplo não faz a menor diferença…

A proposito, essa classe TesteL que você colocou aí, não compila porque você não tem esse construtor que recebe 3 int pra você chamar com this().

Da uma olhada nas classes
classe Time2:

public class Time2
{
   private int hour;   // 0 - 23
   private int minute; // 0 - 59
   private int second; // 0 - 59

   // construtor sem argumento Time2 : inicializa cada variável de instância
   // com zero; assegura que objetos Time2 iniciam em um estado consistente
   public Time2()                                                      
   {                                                                   
      this( 0, 0, 0 ); // invoca o construtor Time2 com três argumentos
   } // fim do construtor sem argumento Time2

   // Construtor Time2: hora fornecida, minuto e segundo padronizados para 0
   public Time2( int h )                                                
   {                                                                    
      this( h, 0, 0 ); // invoca o construtor Time2 com três argumentos
   } // fim do construtor de um argumento Time2

   // Construtor Time2: hora e minuto fornecidos, segundo padronizado para 0
   public Time2( int h, int m )                                         
   {                                                                    
      this( h, m, 0 ); // invoca o construtor Time2 com três argumentos
   } // fim do construtor de dois argumentos Time2

   // Construtor Time2: hour, minute e second fornecidos
   public Time2( int h, int m, int s )                      
   {                                                        
      setTime( h, m, s ); // invoca setTime para validar a data/hora
   } // fim do construtor de três argumentos Time2

   // Construtor Time2: outro objeto Time2 fornecido
   public Time2( Time2 time )                                    
   {                                                             
      // invoca o construtor de três argumentos Time2
      this( time.getHour(), time.getMinute(), time.getSecond() );
   } // fim do construtor Time2 com um argumento de objeto Time2

   // Métodos set
   // configura um novo valor de data/hora usando UTC; assegura que
   // os dados permaneçam consistentes configurando valores inválidos como zero
   public void setTime( int h, int m, int s )
   {
      setHour( h );   // configura hour
      setMinute( m ); // configura minute
      setSecond( s ); // configura second
   } // fim do método setTime

   // valida e configura a hora                   
   public void setHour( int h )               
   {                                          
      hour = ( ( h >= 0 && h < 24 ) ? h : 0 );
   } // fim do método setHour                    

   // valida e configura os minutos                   
   public void setMinute( int m )               
   {                                            
      minute = ( ( m >= 0 && m < 60 ) ? m : 0 );
   } // fim do método setMinute                    

   // valida e configura os segundos                
   public void setSecond( int s )               
   {                                            
      second = ( ( s >= 0 && s < 60 ) ? s : 0 );
   } // fim do método setSecond                    

   // Métodos get
   // obtém valor da hora      
   public int getHour()   
   {                      
      return hour;        
   } // fim do método getHour

   // obtém valor dos minutos      
   public int getMinute()   
   {                        
      return minute;        
   } // fim do método getMinute

   // obtém valor dos segundos      
   public int getSecond()   
   {                        
      return second;        
   } // fim do método getSecond

   // converte em String no formato de data/hora universal (HH:MM:SS)
   public String toUniversalString()
   {
      return String.format( 
         "%02d:%02d:%02d", getHour(), getMinute(), getSecond() );
   } // fim do método do toUniversalString

   // converte em String no formato padrão de data/hora (H:MM:SS AM ou PM)
   public String toString()
   {
      return String.format( "%d:%02d:%02d %s", 
         ( (getHour() == 0 || getHour() == 12) ? 12 : getHour() % 12 ),
         getMinute(), getSecond(), ( getHour() < 12 ? "AM" : "PM" ) );
   } // fim do método toString
} // fim da classe Time2

Classe time2

public class Time2Test 
{
   public static void main( String args[] )
   {
      Time2 t1 = new Time2();             // 00:00:00
      Time2 t2 = new Time2( 2 );          // 02:00:00
      Time2 t3 = new Time2( 21, 34 );     // 21:34:00
      Time2 t4 = new Time2( 12, 25, 42 ); // 12:25:42
      Time2 t5 = new Time2( 27, 74, 99 ); // 00:00:00
      Time2 t6 = new Time2( t4 );         // 12:25:42

      System.out.println( "Constructed with:" );
      System.out.println( "t1: all arguments defaulted" );
      System.out.printf( "   %s\n", t1.toUniversalString() );
      System.out.printf( "   %s\n", t1.toString() );

      System.out.println( 
         "t2: hour specified; minute and second defaulted" );
      System.out.printf( "   %s\n", t2.toUniversalString() );
      System.out.printf( "   %s\n", t2.toString() );

      System.out.println( 
         "t3: hour and minute specified; second defaulted" );
      System.out.printf( "   %s\n", t3.toUniversalString() );
      System.out.printf( "   %s\n", t3.toString() );

      System.out.println( "t4: hour, minute and second specified" );
      System.out.printf( "   %s\n", t4.toUniversalString() );
      System.out.printf( "   %s\n", t4.toString() );

      System.out.println( "t5: all invalid values specified" );
      System.out.printf( "   %s\n", t5.toUniversalString() );
      System.out.printf( "   %s\n", t5.toString() );

      System.out.println( "t6: Time2 object t4 specified" );
      System.out.printf( "   %s\n", t6.toUniversalString() );
      System.out.printf( "   %s\n", t6.toString() );
   } // fim de main
}

O exemplo que eu coloquei e o primeiro método construtor
da classe Time2

   public Time2()                                                      
   {                                                                   
      this( 0, 0, 0 ); // invoca o construtor Time2 com três argumentos
   }

gostaria de saber qual a real função dele nesta classe Time2 ele não faz o papel do construtor padrão já quando quando ele é invocado e do mesmo jeito que do construtor padrão
Time2 t1 = new Time2()
eu não entedi quando vc falow

Esse seu construtor nao está fazendo nada, porque no momento em que ele atribui 0 para as variaveis, elas já valem 0.

Quem inicializa as variaveis com valores padrões não é o construtor padrão, esse comportamento existe idependente de o construtor padrão existir ou não…

Veja:

[code]public class Teste{
public int x;
public boolean b;
public double d;

public Teste(int x){
this.x = x;
}
}

Teste t = new Teste(10);
System.out.println(t.x);
System.out.println(t.b);
System.out.println(t.d);[/code]

Isso vai imprimir:
10
false
0.0

Veja que não existe construtor padrão e mesmo assim as variaveis são inicializadas… acho que você só está fazendo uma confusão entre construtor padrão e inicialização de atributos… não é o construtor padrão quem faz isso, esse comportamento é implicito e acontece de qualquer forma…