정적(static) 및 비정적(non-static)
2026 단어 J#
정적 (static) 은 컴파일된 후에 분배된 메모리가 프로그램이 메모리를 종료할 때까지 계속 존재하는 것을 말한다. 즉, 프로그램이 실행될 때까지 이 메모리가 계속 존재한다는 것이다.
비정적(non-static)은 컴파일할 때 new를 통해 실례화하고 초기화하여 대상(즉 new를 통해 시스템에 메모리를 열어 저장)을 만들고 대상을 바꾸어 프로그램을 종료할 때까지 공간을 방출한다. 즉, 대상만 존재하면 그 메모리는 계속 저장된다.
둘은 시스템에서 메모리를 분배하는 방식이 다르기 때문에 정적 대상과 비정적 대상을 호출하는 방법이 다르다.그들의 생명 주기도 다르다.
예: 정적
package StaticS;
class TStatic{
static int i;
public TStatic(){
i = 4;
}
public TStatic(int j){
i = j;
}
public static void main(String args[]){
TStatic t = new TStatic(5);
System.out.println(t.i);
System.out.println(TStatic.i);// ,
TStatic tt = new TStatic(); //
System.out.println(TStatic.i);
System.out.println(t.i);
System.out.println(tt.i);
System.out.println(t.i);
}
}
입력:
554444
분석:
TStatic t = new TStatic(5); static int i에 "5"값을 지정합니다.
TStatic tt = new TStatic(); static int i에 "4"값을 추가합니다.
i는 static이기 때문에 매번 같은 메모리 공간에서 수정되기 때문에 값도 변합니다.
예: non-static
package StaticS;
class TStatic{
int i;
public TStatic(){
i = 4;
}
public TStatic(int j){
i = j;
}
public static void main(String args[]){
TStatic t = new TStatic(5);
System.out.println(t.i);
TStatic tt = new TStatic();
System.out.println(t.i);
System.out.println(tt.i);
System.out.println(t.i);
}
}
출력:
5545
분석:
TStatic t = new TStatic(5); static int i에 "5"값을 지정합니다.
TStatic tt = new TStatic(); static int i에 "4"값을 추가합니다.
i가 아니기 때문에 매번 t or tt가 분배한 메모리 공간에서 i의 값을 수정하기 때문에 값은 t or tt와 관련이 있습니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JS 동적 추가 삭제 테이블텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.