Я считаю, что все знают, что новое ключевое слово Java создает создание объекта. Да, это также распределяет пространство памяти для новых объектов.
Например, в случае, как New Mydate (22, 7, 1964), его завершение требует четырех частей:
один. Распределите пространство памяти для нового объекта и храните Mydate в кучу.
два. Выполнить инициализацию дисплея
три. Выполнить конструктор. Параметры кронштейна в новом методе передаются конструктору, и значение объекта опубликовано.
Четыре Эта переменная присваивается как ссылка на новый объект в памяти кучи
С точки зрения непрофессионала, ваша новая операция фактически добавляет новый объект в кучу памяти и инициализацию нового объекта с помощью метода конструктора и хранение ссылки на объект в стеке.
Здесь у меня есть случай, который легко понять:
открытый класс PET {защищенный бон be = this.b (); public bean b () {return new bean ();}} public void -test () {be.setName ("Zhang san");} public void test2 () {System.out.println (be.getName ();} public void void main (string [] args) {args). People (); pe.test (); pe.test2 ();} Родительский класс и детский класс. Назначьте значение имени через тест. Выходное значение Test2 обнаружит, что выходной тест назначен имени. Потому что при запуске основного метода программа сначала составит родительский класс и создаст экземпляры объекта BE, поэтому ссылки в подклассе являются одним и тем же объектом, но при изменении к следующему коду:
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) {pehy pe = new People (); pe.test (); В тесте я новый объект A Be, и вывод нулевой, потому что ссылки, которые они хранят в стеке памяти, разные. В фактическом процессе кодирования лучше всего писать объекты с большими ссылками в родительском классе, наследовать подклассы или написать их в одно правый ленивый режим Java:
открытый класс Danli1class {// 1. Чтобы реализовать однокоммерческую модель, вы должны изменить его метод строительства () private danli1class () {} // 2. Во -первых, создайте экземпляр самостоятельно личный статический Danli1class dan1 = new danli1class (); // 3. Чтобы убедиться, что другие программы получают доступ к объекту экземпляра HUA в этом экземпляре, вам необходимо определить статический метод публичного статического Danli1class danli1 () {return dan1;}} Это сохранит использование памяти и позволит повторно использовать объекты, так почему бы не сделать это?