> For the complete documentation index, see [llms.txt](https://byulseop-til.gitbook.io/sinheeseop_til/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://byulseop-til.gitbook.io/sinheeseop_til/java/101/variable_and_method_lifecycle.md).

# VariableAndMethodLifecycle

## 0. 알아두면 좋은 기초 상식 5가지

1. **클래스 파일은 보조 기억 장치**(SSD, HDD 등)에 저장된다.
2. **CPU와 보조 기억 장치 간**의 속도 차이는 매우 커서, CPU가 직접 보조 기억 장치에서 데이터를 읽어 처리하기엔 비효율적이다.
3. **Loading**: 보조 기억 장치에 있는 파일(프로그램)을 \*\*주 기억 장치(RAM)\*\*로 불러오는 과정.
4. 프로그램이 로딩되어 RAM에 올라오면, **CPU는 RAM에서 프로그램을 읽고 쓰며 작업**을 처리한다.
5. 작업이 끝나면 다시 \*\*RAM → 보조 기억 장치(SSD, HDD)\*\*로 **Save**하여 저장한다.

> **정리**\
> SSD/HDD는 속도가 느려, CPU가 RAM과만 직접 일한다.\
> 보조 기억 장치에 있는 데이터를 작업하려면 RAM으로 **Loading**해야 하며,\
> 작업이 끝난 결과는 다시 **RAM → 보조 기억 장치**로 **Save**된다.

## 1. 인스턴스 변수(Instance Variable) 생성 시기

* `new` 키워드로 **인스턴스(객체)를 생성**할 때 **함께 만들어짐**.
* 객체마다 독립적인 인스턴스 변수가 존재하므로, **객체를 생성**해야만 해당 변수를 사용할 수 있다.

## 2. 클래스 변수(Class Variable) 생성 시기

* 클래스가 처음으로 **메모리에 로딩**될 때 생성.
* 따라서, **객체 생성 없이도** 클래스가 로딩만 되어 있다면 **`클래스명.변수명`** 형태로 접근 가능 (`static` 변수).

## 3. 지역 변수(Local Variable) 생성 시기

* **변수 선언문이 실행**되는 순간 생성.
* 주로 메서드나 블록 안에서 선언되며, 해당 **블록이 종료**되면 소멸된다.

## 4. 한눈에 보는 요약

* **인스턴스 변수**: 객체(`new`) 생성 시점에 생성 → 객체가 살아있는 동안만 유효.
* **클래스 변수(`static`)**: 클래스 로딩 시점에 생성 → 객체 없이도 사용 가능.
* **지역 변수**: 메서드(또는 블록) 내부에서 선언 시점에 생성 → 해당 블록이 끝나면 소멸.
