2.자바 프로 그래 밍 사상 5~7 장 읽 기
https://basebase.github.io/2016/08/27/java-finalize%E6%96%B9%E6%B3%95/
이 글 은 대상 폐기 과정 에서 의 몇 가지 상태,GC 가 이러한 상 태 를 어떻게 추적 하 는 지 에 대해 설명 한다.
2.구조 기 를 사용 하여 대상 을 초기 화 합 니 다.자바 에서'생 성'과'초기 화'를 함께 묶 으 면 분리 할 수 없습니다.
3.구조 기 는 과부하 방식 으로 이 루어 집 니 다.과부하 의 차 이 는 매개 변수의 개수,매개 변수의 유형(서로 다른 유형의 매개 변수의 순서,심지어 구분 하 는 표지 로 도 할 수 있 지만 이렇게 하지 마 십시오)입 니 다.
다시 불 러 올 때 유형의 전환 이 발생 합 니 다.기본 데이터 형식 에 있어 서 는 자신 과 일치 하 는 것 이 좋 습 니 다.없 으 면 순서대로 위로 일치 하 는 것 이 좋 습 니 다.byte==>short==>int==>log==>float==>double,그 중에서 char 는 비교적 특수 하 며,char 가 일치 하지 않 는 상황 에서 int 를 우선 매 칭 하고 아래 의 순 서 는 일치 합 니 다.
들 어 오 는 인자 가 크다 면?형식 변환 을 통 해 협소 화 전환 을 실행 해 야 합 니 다.그렇지 않 으 면 컴 파일 러 가 잘못 되 었 습 니 다.
4.구조 기:
만약 당신 이 쓴 클래스 에 구조 기 가 없다 면,컴 파일 러 는 자동 으로 기본 구조 기 를 만들어 줍 니 다.
구조 기 를 정의 하면 인자 가 있 든 없 든 컴 파일 러 는 기본 구조 기 를 자동 으로 만 드 는 데 도움 을 주지 않 습 니 다.
5.청소:
4.567917.대상 이'특수'메모리 영역 을 얻 었 다 고 가정 합 니 다.쓰레기 수 거 기 는 new 에서 분 배 된 메모리 만 방출 할 줄 알 기 때문에 그 대상 의 이 메모 리 를 어떻게 방출 해 야 할 지 모 릅 니 다
자바 는 이러한 상황 에 대응 하기 위해 클래스 에서 finalize()방법 을 정의 할 수 있 습 니 다
4.567917.작업 원리:쓰레기 회수 기 가 방출 대상 이 차지 하 는 저장 공간 을 준비 하면 먼저 finalize()방법 을 호출 하고 다음 쓰레기 회수 동작 이 발생 할 때 만 진정 으로 회수 대상 이 차지 하 는 메모리
주의 1:대상 이 쓰레기 에 회수 되 지 않 을 수 있 습 니 다.즉,쓰레기 회수 라 는 일이 반드시 발생 하 는 것 은 아 닙 니 다주의 2:쓰레기 수 거 는'구조 분석'과 같 지 않 습 니 다4.567917.쓰레기 회수 라 는 일이 계속 발생 하지 않 으 면 저장 공간 이 다 쓴 순간 에 만 풀 려 날 수 있다
4.567917.주의 3:쓰레기 수 거 는 메모리 와 관련 이 있 습 니 다.쓰레기 수 거 의 유일한 목적 은 프로그램 이 더 이상 사용 하지 않 는 메모 리 를 회수 하 는 것 입 니 다
4.567917.자바 가상 컴퓨터 가 메모리 소모 상황 에 직면 하지 않 는 다 면 그 는 쓰레기 수 거 를 통 해 메모 리 를 복구 하 는 데 시간 을 낭비 하지 않 을 것 이다
6.구조 기 초기 화
static-일반 멤버 초기 화-마지막 으로 구조 기
4.567917.static 키 워드 를 명시 적 으로 사용 하지 않 아 도 구조 기 는 실제 적 으로 정적 인 방법 이다
예 를 들 면:
public enum ColorLight {
RED(1," "),GREEN(2," "),YELLOW(3," ");
private int num;
private String color;
ColorLight(int num,String color){
this.num = num;
this.color = color;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
8.제6 장 은 접근 권한 에 관 한 것 으로 private proctected 기본 Public 네 가지 로 기본 적 인 것 입 니 다.
9.제7 장 은 재 활용 류 입 니 다.조합 과 계승 에 관 한 주요 중점 은 어떻게 쓰 는 것 이 아니 라 어떻게 쓰 는 지 간단 합 니 다.중심 은 final 키워드 의 수식 변수,방법,유형의 역할 에 있 습 니 다.final 은 운영 할 때 초기 화 되 고 바 꿀 수 없 으 며 컴 파일 시기 가 아 닌 것 을 주의 하 는 것 입 니 다.이것 이 바로 final 이 정적 으로 정의 하 는 것 입 니까?아니면 비 정적 으로 정의 하 는 가장 큰 차이 입 니까?계승 및 초기 화 순서:
우선 부모 클래스 의 정적 코드 블록 입 니 다.
그리고 하위 클래스 의 정적 코드 블록 입 니 다.
main 실행 시작:
부류 의 일반적인 방법 과 구조 기
하위 클래스 의 일반적인 방법
서브 클래스 의 구조 기
다음은 프로그램 으로 보 여 드 리 겠 습 니 다.
부모 클래스:
public class Insect {
private int i = 9;
protected int j;
Insect(){
System.out.println("i="+i+",j="+j);
j =39;
}
private static int x1 = printInit("static x1");
static int printInit(String s) {
System.out.println(s);
return 47;
}
}
하위 클래스:
public class Beetle extends Insect{
private int k = printInit("beetle init");
public Beetle(){
System.out.println("k="+k);
System.out.println("j="+j);
}
private static int x2 = printInit("static x2");
public static void main(String[] args) {
System.out.println("main");
Beetle b = new Beetle();
}
}
운행 결 과 는 내 가 위 에서 말 한 순 서 를 참조 하면 한눈 에 알 수 있다.
static x1
static x2
main
i=9,j=0
beetle init
k=47
j=39
증명 하기 위해:
첫 번 째 원칙:선친 류,후 하위 류 두 번 째 원칙:정적 코드 블록(순서대로 실행)을 먼저 실행 하고 일반 변수 정 의 를 집행 하 며 마지막 으로 구조 기 입 니 다.저 는 이 를 개조 하 겠 습 니 다.
public class Insect {
private int i = 9;
protected int j;
private int hhh = printInit("hhh");
static {
System.out.println(" ");
}
Insect(){
System.out.println("i="+i+",j="+j);
j =39;
}
private static int x1 = printInit("static x1");
static {
System.out.println(" ");
}
static int printInit(String s) {
System.out.println(s);
return 47;
}
}
public class Beetle extends Insect{
private int k = printInit("beetle init");
public Beetle(){
System.out.println("k="+k);
System.out.println("j="+j);
}
private static int x2 = printInit("static x2");
public static void main(String[] args) {
System.out.println("main");
Beetle b = new Beetle();
}
}
실행 결 과 는:
static x1
// ,
static x2 //
main //main
hhh //
i=9,j=0 //
beetle init //
k=47 //
j=39
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.