dntalemao:
Galera o operador new é responsável em alocar memória para as variáveis de instância, de chamar o construtor e retornar a referência do objeto?
Não bem. O responsável por alocar a memória é a JVM. new não é o mesmo que o maloc do C. Ele não devolve a referencia, ele devolve o objeto construido (as referencias são implicitas em java). Em resumo, ele é apenas uma forma de comandar a classe a executar o contrutor e devolver o objeto.
O construtor é um menbro da classe, não do objeto ( é um static especial)
Certo. Quando o contrutor é invocado o objeto já existe, já foi construido pela JVM. O nome certo para o contrutor deveria ser “inicializador”, mas o nome “contrutor” é melhor porque remete ao padrão Builder. O objeto já existe (vc pode usar “this”) mas ele não está em um estado consistente. O trabalho do construtor é esse, deixar o objeto em um estado consistente. Existem algumas especificidades como o uso de final em variáveis de instancia que significa que elas devem estar inicializadas quando o construtor acabar ( exactament por causa da consisência)
Em outras linguagens o construtor é mais parecido com um método estático e até é invocado como um, usando um sintaxe como Cliente.new().
No java 8 está sendo previsto que isto também exista em java isto porque a partir do java 8 teremos Functors o que singnifica que todos os métodos das classes podem virar objetos de função ( especilamente os estáticos) e como os construtores não métodos especiais eles também poderão ser transformados em functors ( encapsulados numa nova interface chamada Factory).
Na prática vc pode encarar os construtores como métodos especiais que a jvm invoca ,mas que o prrgrama não pode invocar diretamente. O new é a forma de vc comandar a jvm a invocar o construtor.