Acredito que todo mundo sabe que a nova palavra -chave de Java está instanciando um objeto. Sim, também está alocando espaço de memória para novos objetos.
Por exemplo, em um caso como o New Mydate (22, 7, 1964), sua conclusão requer quatro partes:
um. Aloce espaço de memória para o novo objeto e armazene mydate na pilha.
dois. Executar a inicialização da tela
três. Executar o construtor. Os parâmetros do suporte no novo método são passados para o construtor e o valor do objeto é publicado.
Quatro. Esta variável é atribuída como uma referência a um novo objeto na memória da heap
Nos termos do leigo, sua nova operação está adicionando um novo objeto à pilha de memória e inicializando o novo objeto por meio de um método construtor e armazenando a referência ao objeto na pilha.
Aqui tenho um caso fácil de entender:
public class Pet {Bean protegido be = this.b (); public bean b () {retorna new bean ();}} public void test () {be.setName ("zhang san");} public void test2 () {System.out.println (be.getName ());} public stain main (string.out.out.println (be.getName ());} public stain main (string.out.out.println (be.getName ());} public stain main (string.out.out.println (be.getName ());} public stain main (string.out.out.println (be.getName ());} public stain » Pessoas (); p.test (); p.test2 ();} Uma classe pai e uma aula infantil. Atribua um valor ao nome através do teste. O valor de saída do teste2 descobrirá que o teste de saída é atribuído ao nome. Porque ao executar o método principal, o programa compilará primeiro a classe pai e instanciará o objeto BE, portanto as referências na subclasse são o mesmo objeto, mas se modificado para o código a seguir:
public void test () {bean be = new bean (); be.setName ("zhang san");} public void test2 () {System.out.println (be.getName ());} public static void main (string [] args) {People = people); No teste, eu sou um objeto A Be Object e a saída é nula, porque as referências que eles armazenam na pilha de memória são diferentes. No processo de codificação real, é melhor escrever objetos com mais referências na classe pai, herdar subclasses ou escrevê-los no modo preguiçoso de Java, de direita:
classe pública Danli1class {// 1. Para implementar o modelo de lucro único, você deve modificar seu método de construção () private danli1class () {} // 2. Primeiro, instancie a instância por si mesmo, private estático Danli1class Dan1 = novo Danli1Class (); // 3. Para garantir que outros programas acessem a instância do objeto Hua desta instância, você precisa definir um método estático public estático danli1class Danli1 () {return dan1;}} Isso salvará o uso da memória e permitirá que os objetos sejam reutilizados, então por que não fazer isso?