자바 의 더미,스 택,상수 탱크 를 상세 하 게 소개 합 니 다.

3444 단어 자바
다음은 JAVA 의 더미,창고 와 상수 탱크 를 소개 합 니 다.
1.레지스터
가장 빠 른 저장 소 는 컴 파일 러 가 수요 에 따라 분 배 됩 니 다.우 리 는 프로그램 에서 제어 할 수 없습니다.
2.창고
기본 형식의 변수 데이터 와 대상 의 인용 을 저장 하지만 대상 자 체 는 스 택 에 저장 하지 않 고 쌓 기(new 에서 나 온 대상)나 상수 탱크 에 저장 합 니 다(문자열 상수 대상 은 상수 탱크 에 저장 합 니 다).
3.더미
new 에서 나 온 모든 대상 을 저장 합 니 다.
4.정적 영역
정적 구성원 저장(static 정의)
5.상수 탱크
문자열 상수 와 기본 형식 상수(Public static final)를 저장 합 니 다.
6.비 RAM 저장 소
하드디스크 등 영구 저장 공간
여기 서 우 리 는 주로 스 택,쌓 기와 상수 지 에 관심 을 가지 고 스 택 과 상수 지 의 대상 을 공유 할 수 있 으 며 쌓 인 대상 에 대해 공유 할 수 없습니다.스 택 의 데이터 크기 와 수명 주 기 는 확실 합 니 다.가리 키 는 데 이 터 를 참조 하지 않 으 면 이 데 이 터 는 사라 집 니 다.쌓 인 대상 은 쓰레기 수 거기 가 수 거 를 담당 하기 때문에 크기 와 생명주기 가 확실 하지 않 아 유연성 이 크다.
문자열:대상 의 인용 은 스 택 에 저 장 됩 니 다.컴 파일 기간 이 만 들 어 졌 다 면 상수 탱크 에 저 장 됩 니 다.실행 기간(new 에서 나 온)이 어야 확인 할 수 있 는 것 은 더미 에 저 장 됩 니 다.equals 와 같은 문자열 은 상수 탱크 에 영원히 한 부 만 있 고 쌓 여 있 습 니 다.
다음 코드 와 같이:
    String s1 = "china";  
    String s2 = "china";  
    String s3 = "china";  
    String ss1 = new String("china");  
    String ss2 = new String("china");  
    String ss3 = new String("china"); 
 
기본 유형의 변수 와 상수:변수 와 인용 은 스 택 에 저장 되 고 상수 탱크 에 저 장 됩 니 다.
다음 코드 와 같이:
    int i1 = 9;  
    int i2 = 9;  
    int i3 = 9;  
    public static final int INT1 = 9;  
    public static final int INT2 = 9;  
    public static final int INT3 = 9;  

구성원 변수 와 부분 변수:구성원 변 수 는 방법 외부,클래스 의 내부 정의 변수 입 니 다.부분 변 수 는 방법 이나 구문 블록 내부 에서 정의 하 는 변수 입 니 다.부분 변 수 는 초기 화 되 어야 합 니 다.형식 매개 변 수 는 부분 변수 이 고 부분 변수의 데 이 터 는 스 택 메모리 에 존재 합 니 다.스 택 메모리 의 부분 변 수 는 방법 이 사라 지면 서 사라 집 니 다.
구성원 변 수 는 쌓 인 대상 에 저장 되 어 있 으 며 쓰레기 회수 기 가 수 거 를 책임 집 니 다. 
다음 코드 와 같이:
    class BirthDate {  
    private int day;  
    private int month;  
    private int year;  
    public BirthDate(int d, int m, int y) {  
    day = d;  
    month = m;  
    year = y;  
    }  
      get,set  …… }  
    public class Test{ public static void main(String args[]){  
    int date = 9;  
    Test test = new Test();  
    test.change(date);  
    BirthDate d1= new BirthDate(7,7,1970);  
    }  
    public void change1(int i){ i = 1234;  
    } 

 
상기 코드 에 대해 date 는 부분 변수 이 고 i,d,m,y 는 모두 부분 변수 이 며 day,month,year 는 구성원 변수 입 니 다.다음은 코드 가 실 행 될 때의 변 화 를 분석 합 니 다.
1.main 방법 실행 시작:
    int date = 9;  

date 부분 변수,기본 형식,참조 와 값 이 스 택 에 있 습 니 다.
2.test 를 대상 으로 인용 하여 스 택 에 존재 하고 대상(new Test()은 쌓 여 있 습 니 다.
    Test test = new Test();  

  3.
test.change(date);  
 
i 는 국부 변수 로 인용 과 값 이 창고 에 존재 합 니 다.방법 change 실행 이 완료 되면 i 는 스 택 에서 사라 집 니 다. 
4.
    BirthDate d1= new BirthDate(7,7,1970);  
 
d1 을 대상 으로 인용 하여 스 택 에 존재 합 니 다.대상(new BirthDate()은 더미 에 존재 합 니 다.그 중에서 d,m,y 는 부분 변수 로 스 택 에 저장 되 고 그들의 유형 은 기본 형식 이기 때문에 그들의 데이터 도 스 택 에 저 장 됩 니 다.day,month,year 는 구성원 변수 로 더미 에 저 장 됩 니 다(new BirthDate().BirthDate 구조 방법 이 실행 되면 d,m,y 는 스 택 에서 사라 집 니 다.
5.main 방법 이 실행 되면 date 변수,test,d1 참조 가 스 택 에서 사라 지고 new Test(),new BirthDate()는 쓰레기 수 거 를 기다 릴 것 입 니 다.
이상 의 내용 의 소 개 를 통 해 당신 에 게 도움 을 줄 수 있 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기