지역변수(stack 영역)

- 지역안에서 선언된 변수

- 그 영역의 닫는 중괄호( } ) 를 만났을 때, 메모리에서 해제된다.

- 사용자가 직접 초기화 해야한다.

- 다른 영역에서 접근할 수 없기 때문에 보안성이 뛰어나다.

 

ex )

1
2
3
4
5
6
7
8
9
package
 
public class Main {
 
 
    public static void main(String[] args) {
        int a = 0//지역변수.
    }
}
 
 

 

전역변수(data 영역)

- 클래스 영역 안에 있고, 전체 영역에서 사용가능한 변수

- 클래스 영역 외의 어떠한 영역에도 포함되어 있지 않다.

- new를 만났을 때 초기화 된다.

- 프로그램 종료시 메모리에서 해제된다.

- 다른 영역에서도 접근 할 수 있기 때문에, 보안성이 상대적으로 낮다.

 

ex )

1
2
3
4
5
6
7
8
9
10
package 함수2.형성평가02;
 
public class Main {
 
    int a = 0//전역변수.
    
    public static void main(String[] args) {
    
    }
}
 
 

 

static변수(data 영역)

- 컴파일을 하게 되면 가장 먼저 메모리에 올라가고, 어떠한 경우에도 초기화가 되지 않는다.

- 단, 프로그램 종료시 메모리에서 해제 된다.

- 메모리에 고정되기 때문에 남용시 메모리 혹은 프로그램 실행 속도에 악영향을 준다.