[Java] static

devheyrin·2022년 8월 27일
1

JavaBasic

목록 보기
3/6

static

  • static 키워드를 가진 멤버변수(클래스변수)나 메소드는 어디서든지 접근 가능하다. = (메모리 상주 키워드)
  • static 메소드에서는 static 멤버변수나 static 메소드만 호출 가능하다.
  • static 메소드에서는 non-static 메소드에 접근할 때 인스턴스화(객체화 = 메모리 할당)시켜야 접근이 가능하다.

static 키워드를 사용하는 경우

  • 일반적인 메소드에는 static 을 붙이지 않는다.
  • 지역변수에는 static 변수를 선언할 수 없다.
    • static 메소드 내부에서 static 변수를 선언할 수 없다.
    • non-static 메소드 내부에서 static 변수를 선언할 수 없다.
  • static 변수는 공용변수라고 한다. → 판매 누적, 방문자수 누적 등의 변수에 사용!
    • 예) 게시판 글 방문자수 - 계속 누적되어야 하는 변수. 어떤 경로를 통해 접근하든 누적된 값을 가지고 있어야 한다.
  • 인스턴스 자동초기화를 개발자가 작업
    • heap영역(인스턴스 영역)에 메모리를 한 번 잡아두고 계속 사용하고 싶을 때 사용
public class StaticTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// printChar('*', 30);
		
		// 선언과 초기화를 한번에 하는 방법 
		StaticTest pc = new StaticTest(); 
		// pc 변수는 StaticTest 객체의 주소만을 가진다. 
		// pc 변수는 StaticTest 객체의 타입만을 가진다. 
		pc.printChar('*', 30);
		System.out.println("안녕 자바!~");
		pc.printChar('*', 30);
	}
	
	// static void printChar(char ch, int num) {
	void printChar(char ch, int num) {
		for (int cnt=1; cnt<num; cnt++) {
			System.out.print(ch);
		}
		System.out.println();
	}
}

정적 초기화 블럭 static {}

  • 클래스가 사용되기 전에 JVM에 의해 단 한번 호출(실행)되게 하고 싶을 때 사용
  • 정적 필드(변수)의 초기화 설정에 주로 사용된다. → 누구나 언제 어디서든 접근 가능하도록!
public class StaticBlock {
	static int[] arr;
	// arr 배열을 1~100으로 단 한 번 초기화 
	static {
		arr = new int[100];
		for (int i=0; i<100; i++) {
			arr[i] = i+1;
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(StaticBlock.arr[34]);
		System.out.println(StaticBlock.arr[97]);
		System.out.println(StaticBlock.arr[12]);
		
	}

}
profile
개발자 헤이린

0개의 댓글