static
static 변수(정적 변수, 클래스 변수), static method(클래스 메소드)
자바 JVM으로 소스가 적재될시에 자동으로 Data Area에 메모리 할당을 받습니다. . new 명령어는 디스크상에 있는 클래스를 읽어 heap 메모리에 저장하는 기능을 합니다.
Test test = new Test();static 변수와 메소드는 new를 이용해 객체를 만들지 않고 사용 가능합니다. . 기본적으로 모든 클래스의 사용은 new를 이용하여 할당한 후 가능합니다.
색상 정보등 단순한 값을 참조할 경우와 값을 편집하는 경우에 사용합니다. . static 메소드가 많이 있는 클래스를 utility class라고합니다.
static 변수는 JVM으로 로딩시에 메모리에 오로지 하나만 생성됨으로 클래스 변수라고 합니다.
static변수는 DS(Data Segment, Data Area) 데이터 영역을 사용합니다.
static 변수는 객체를 만들지 않아도 접근할 수 있습니다.
ScjpPass.java
class ScjpPass{
//멤버 변수, Heap
int t1=0;
int t2=0;
int t3=0;
int t4=0;
//클래스 변수, Data area
static int BONUS=100;
//생성자, Source area
public ScjpPass(){
}
//생성자, this = sp객체가 가지고 있는 hash code
//sp객체의 heap메모리를 공유하게됩니다.
//int t1, int t2, int t3, int t4: Stack
public ScjpPass(int t1, int t2, int t3, int t4){
//Heap = Stack
//전역 변수 = 지역 변수
//멤버 변수 = 지역 변수
this.t1 = t1;
this.t2 = t2;
this.t3 = t3;
this.t4 = t4;
}
}Scjp.java
static 메소드는 객체를 만들지 않고도 호출할 수 있습니다.
SCWCDmain.java
SCWCDMain.java
static 에서의 초기화 유무.
객체를 생성하면 멤버변수는 전부 기본값이나 생성자에서 지정한 값으로 초기화됩니다. 하지만 static변수는 프로그램을 실행시 최초 한번만 특정값으로 초기화되고(여기서는 0으로 초기화) 더이상 초기화가 되지않습니다. 따라서 한번 만들어진 static변수는 계속적으로 값이 증가 및 감소됩니다.
static 변수는 객체를 여러번 생성해도 한번만 생성이 됩니다.
static 변수는 멤버 메소드에 선언할 수 없습니다.
StaticDemo.java
SataicDemo.java
static 의 활용 분야
static 변수
객체간에 값을 공유할 경우 사용합니다.
상수 선언시에 사용합니다.
static 메소드
단순한 값의 변화를 구현시에 사용합니다. wrapper클래스 참고
유틸리티(단순 데이터 조작) 클래스 제작에 사용됩니다.
값을 변경할 수 없는 final 변수(상수 선언)
값을 변경할 수가 없습니다.
값을 고정할 필요가 있는 코드와 같은 형태의 데이터에 사용합니다.
예)1년 12달, 요일, 주7일
Final.java
Finalmain.java
Last updated