절차적 프로그래밍: 프로그램을 일련의 절차나 함수로 분해하는 방식
데이터는 일반적으로 별도의 구조에서 관리되며, 함수나 절차는 이 데이터를 사용하여 작업을 수행
구조적프로그래밍: "GOTO"와 같은 비구조적 제어 흐름을 피하고, 순차적 실행, 조건 분기(if-else 문), 반복(loop) 등의 구조화된 제어 구문을 사용
JDK: 자바 개발 도구(Java Development Kit)
JVM: 자바 가상 기계(Java Virtual Machine)
JRE: 자바 실행 환경(Java Runtime Environment)
static과 stack, heap은 데이터를 저장하는 영역이다.
static: 클래스의 놀이터
stack: 메소드의 놀이터
heap: 객체의 놀이터
Static(정적 메모리)
1. 프로그램이 시작될 때 할당되고 프로그램이 종료될 때 해제되는 메모리 영역
2. 이 영역에 저장된 변수들은 프로그램의 실행 동안 계속 그 값을 유지
Stack (스택 메모리)
1. 함수 호출 시 생성되는 지역 변수 및 함수의 매개 변수에 대한 메모리를 저장하는 영역
2.함수 호출이 종료되면 해당 함수의 변수는 스택에서 pop(제거)되어 메모리가 자동으로 해제
Heap(힙 메모리)
동적으로 메모리를 할당받을 수 있는 영역
이해를 위한 예시 코드를 작성해서 알아보자
public class ex{
public static void main(String[] args){
int k = 5;
int m;
m = square(k);
}
private static int square(int k){
int result;
k= 25;
result = k;
return result;
}
}
이 코드는 단지 예시를 위한 코드이다.
두 개의 static에 변수 k가 선언이 되었지만 이 값은 서로 공유가 되는 값이 아닌 서로의 독자적인 변수로 작용한다.
위의 static이 먼저 동작하고 square을 사용하기 위한 함수가 작용한다.
- 외부 스택 프레임에서 내부 스택 프레임의 변수에 접근하는 것은 불가능하나 그 역은 가능하다.
- 서블릿은 요청당 스레드를 생성한다.
- Field = 필드 = 속성 = 프로퍼티 = Property, Function = 함수 = 메서드 = Method
- 구조적 프로그래밍을 위해 공유 사용 시 문제가 발생하기 쉬운 전역 변수 보다는 지역 변수를 사용