나는 모든 사람들이 Java의 새로운 키워드가 객체를 인스턴스화하고 있다는 것을 알고 있다고 생각합니다. 예, 새로운 개체에 대한 메모리 공간을 할당하고 있습니다.
예를 들어, New MyDate (22, 7, 1964)와 같은 경우 그의 완성에는 네 가지 부분이 필요합니다.
하나. 새 개체에 대한 메모리 공간을 할당하고 MyDate를 힙에 보관하십시오.
둘. 디스플레이의 초기화를 수행하십시오
삼. 생성자를 실행하십시오. 새 방법의 브래킷 매개 변수는 생성자로 전달되며 객체 값이 게시됩니다.
네. 이 변수는 힙 메모리의 새 개체에 대한 참조로 할당됩니다.
Layman의 용어로, 새 작업은 실제로 메모리 힙에 새 개체를 추가하고 생성자 방법을 통해 새 개체를 초기화하고 스택에 객체에 대한 참조를 저장하는 것입니다.
여기에 이해하기 쉬운 사례가 있습니다.
public class pet {propected be be = this.b (); public bean b () {return new bean ();}} public void test () {be.setname ( "zhang san");} public void test2 () {system.out.println (be.getname ()); people (); pe.test (); p.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) {people pe = new People (); pe.test ();}; 테스트에서, 나는 새로운 객체이며 출력은 무효입니다. 메모리 스택에 저장하는 참조가 다르기 때문입니다. 실제 인코딩 프로세스에서는 상위 클래스에서 더 많은 참조가있는 객체를 작성하거나 하위 클래스를 상속하거나 Java의 단일 오른쪽 게으른 모드에 작성하는 것이 가장 좋습니다.
공개 클래스 danli1class {// 1. 단일 비영리 모델을 구현하려면 구성 방법 () private danli1class () {} // 2를 수정해야합니다. 먼저 개인적으로 인스턴스를 직접 인스턴스화하십시오. 개인 정적 Danli1class dan1 = new Danli1class (); // 3. 다른 프로그램 이이 인스턴스의 인스턴스 hua 객체에 액세스하도록하려면 정적 메소드를 정의해야합니다. public static danli1class danli1 () {return dan1;}}. 이렇게하면 메모리 사용을 저장하고 객체를 재사용 할 수 있으므로 왜 그렇게하지 않습니까?