1. 지역변수

    1. 지역 변수는 메서드 안에서 선언되고, 그 메서드가 실행되는 동안만 살아 있는 변수

    2. 특징

      1. 스코프
        1. 선언된 블록 안에서만 사용 가능
      2. 생명 주기
        1. 메서드 호출될 때 생성, 메서드 끝날 때 소멸
      3. 초기화 필수
        1. 자동 초기화 안 해줌 → 직접 값을 줘야 사용 가능
      4. 메모리 위치
        1. 스택 영역에 저장됨
    3. 장점

      1. 잠깐 쓰고 사라지므로 메모리 효율적
      2. 외부에 안 보여서 코드 안전성이 올라감
      3. 다른 메서드와 독립적이라 충돌 위험 적음
    4. 단점

      1. 메서드 끝나면 없어지니, 다른 메서드에서 공유 불가
      2. 재사용하려면 매개 변수나 변환값을 통해 전달해야 함
    5. 예시

      public class Example{
      	public void sayHello(){
      		String message = "Hello"; //지역변수
      	}
      	
      	public void sayBye(){
      		String msg = "Bye";
      		System.out.println(msg);
      	}
      }
      
  2. 지역 변수

    1. 위치
      1. 메서드 안에서 선언
    2. 초기화
      1. 자동 초기화 x → 반드시 직접 초기화해야 사용 가능
    3. 생명주기
      1. 메서드 실행 시 생성, 메서드 종료 시 소멸
    4. 메모리 영역
      1. 스택(Stack)
    public void localExample(){
    	int x;
    	//System.out.println(x); 
    }
    
  3. 멤버변수 (클래스 필드)

    1. 위치

      1. 클래스 안, 메서드 밖에서 선언
    2. 초기화 여부

      1. 명시적으로 초기화하지 않아도 자동으로 기본값이 들어감
    3. 기본값 예시

      1. 숫자형
        1. 0,0.0
      2. boolean
        1. false
      3. 참조형
        1. null
    4. 특징

      1. 객체가 생성될 떼 함께 메모리에 올라가고, 객체가 살아있는 동안 유지됨
      class Example{
      	int a;    //0으로 초기화
      	boolean b; //false로 초기화
      	String c; // null로 초기화
      	
      	
      	void printValues(){
      		System.out.println(a); //0
      		System.out.println(c);  //false
      		System.out.println(c); // null
      	}
      }
      
  4. 지역변수 (메서드 안에서 선언된 변수)

    1. 위치
      1. 메서드, 생성자, 블록 안에서 선언
    2. 초기화 여부
      1. 자동으로 초기화되지 않음 → 반드시 직접 초기화 후 사용해야 함
    3. 특징
      1. 메서드가 호출될 때 생성되고, 메서드가 끝나면 사라짐(스택 메모리에서 관리.)