스코프
- 변수나 함수의 접근 범위를 결정하는 범위를 의미이다.
- 같은 스코프 내에 동일한 변수 값은 못 쓴다.
- 변수나 함수가 코드의 어느 부분에서 참조될 수 있는지를 결정한다.
스코프는 두 가지 종류가 존재한다!
1. 전역 스코프(Global Scope)
→ 전역 스코프에 선언된 변수는 프로그램의 어디에서나 접근 가능합니다.
2. 지역 스코프(Local Scope)
→ 특정 코드 블럭 내에서만 변수나 함수에 접근할 수 있습니다.
스코프 예시 코드
package ex04.test; public class ScopeEx01 { int n1 = 1; static int n2 = 2; static void m1() { int n1 = 10; System.out.println("n1 : " + n1); } void m2() { System.out.println("n2 : " + n1); } // 메인 시작 전에 static에 n2 변수와 m1 메서드가 로드 되어 있음. public static void main(String[] args) { System.out.println("1"); m1(); System.out.println("2"); ScopeEx01 sc = new ScopeEx01(); System.out.println(sc.n1); sc.m2(); } }
큐
- 선형 리스트로 데이터가 ‘선입선출’ (FIFO: First In First Out)방식으로 처리된다.
- 큐는 순서대로 저장하고 실행하기 위해서 사용한다.
- 큐는 저장 공간이 아니다. (코드가 지나가는 원통 공간이라 생각해도 좋을 것 같다.)
- 큐의 역할이 끝나면 종료 되어 사라진다.
스택
- 큐의 정보를 임시로 저장된다.
- 스택은 서로 접근이 안된다. (스택은 서로 변수를 못 찾는다. - 스코프의 예시)
- 스택이 사라질 때 값을 받고 싶으면 유일한 방법이 리턴 값 반환이다.
- 큐의 역할이 끝나서 종료가 될 때 스택도 같이 종료가 되서 종료가 된다.
스택은 서로 다른 공간에서 찾을 수가 없다.
이유 → 스택이 실행 중 일 때만 볼 수 있어서 이다.
→ 이를 서로만 못 찾는게 아닌 모든 공간에서 못 찾는 다고 알면 된다.
하지만!
스태틱과 힙은 모든 스택에서 찾을 수 있다. (이유는 변수 명이 겹칠 일이 없어서!)
스태틱은 어느 공간에서든 찾을 수 있다.
하지만! 단점은 메모리를 많이 먹는다!
지역 변수! → 메서드 내부에 만든 변수 → 생명주기가 제일 짧다! 이걸~~~ 스코프라 한다!
생명 주기 → stack < heap < static (왼쪽부터 짧은 순서)
static을 메인으로 설명한 그림 자료
heap을 메인으로 설명한 그림 자료
위의 그림들은 Queue, Stack 등의 저장 공간에 따른 스코프, 자바의 코딩의 흐름에 대한 그림 설명이다.
Share article