Java의 new 키워드 분석
예를 들어 new MyDate(22,71964)와 같은 사례에서 그의 완성은 네 가지가 필요하다.
하나.새 객체에 메모리 공간을 할당하고 MyDate를 더미에 저장합니다.
둘.디스플레이 초기화 수행
셋.실행 구조기.new 방법에서 괄호 파라미터를 구조기에 전달하고 이 대상의 수치를 출력합니다
사.이 변수는 메모리에 새 대상의 인용으로 지정됩니다
통속적으로 말하면, 당신의 new 작업은 실제로 메모리 더미에 new 대상을 새로 추가하고, 구조 방법을 통해 이 새로운 대상을 초기화하고, 창고에 이 대상의 인용을 저장합니다.
다음은 제가 알기 쉬운 사례가 하나 있습니다.
public class Pet {
protected bean be = this.b();
public bean b(){
return new bean();
}
}
public void test(){
be.setName(" ");
}
public void test2(){
System.out.println(be.getName());
}
public static void main(String[] args) {
People pe = new People();
pe.test();
pe.test2();
}
하나의 부류, 하나의 하위 클래스,test를 통해name에 값을 부여합니다.test2 출력 값을 통해 출력의 올바른 test가name에 부여된 값을 발견할 수 있습니다.main 방법을 실행할 때 프로그램이 먼저 부류를 컴파일하고 be 대상을 실례화하기 때문에 하위 클래스의 인용은 모두 같은 대상이지만 다음 코드로 수정하면 다음과 같습니다.
public void test(){
bean be = new bean();
be.setName(" ");
}
public void test2(){
System.out.println(be.getName());
}
public static void main(String[] args) {
People pe = new People();
pe.test();
pe.test2();
}
테스트에서 저는 be 대상을 새로 만들었습니다. 이런 출력은null입니다. 메모리 창고에 저장된 인용이 다르기 때문입니다. 실제 인코딩을 하는 과정에서 인용이 많은 대상은 부류에 잘 쓰거나 자류가 계승되거나 자바의 단리 게으름뱅이 모드로 쓰는 것이 좋습니다.
public class DanLi1class {
//1. , ()
private DanLi1class(){
}
//2.
private static DanLi1class dan1 = new DanLi1class();
//3. ,
public static DanLi1class danli1(){
return dan1;
}
}
이렇게 하면 메모리 점용을 절약하여 대상이 중복적으로 사용할 수 있게 할 수 있는데, 왜 기꺼이 하지 않겠는가.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.