[java] 클래스와 객체의 멤버 변수와 지역 변수의 차이점은 무엇인가요?
  1. 멤버 변수 (Member Variables):
    • 클래스 내부에 선언되어 모든 객체 인스턴스에서 공유됩니다.
    • 객체의 속성이나 상태를 나타내며, 객체의 생명주기와 함께 유지됩니다.
    • 인스턴스 변수라고도 불리며, 객체 생성 시에 메모리에 할당됩니다.
    • public, private, protected 등의 접근 제한자를 지정하여 접근을 제어할 수 있습니다.
    • 예시:
      class Car {
          private String color; // 멤버 변수
          public int wheels; // 멤버 변수
      
          void start() {
              int speed = 0; // 지역 변수
              System.out.println("Car started");
          }
      
          void stop() {
              System.out.println("Car stopped");
          }
      }
      
  2. 지역 변수 (Local Variables):
    • 메소드, 생성자, 블록 내에 선언되어 해당 블록 내에서만 사용됩니다.
    • 지역 변수는 스택 메모리에 저장되며, 해당 블록의 실행이 끝나면 메모리에서 소멸됩니다.
    • 다른 메소드나 객체에서 접근할 수 없으며, 해당 블록 내에서만 유효합니다.
    • 접근 제한자는 사용하지 않으며, 해당 블록 내에서만 사용 가능합니다.
    • 예시:
      void sayHello() {
          String message = "Hello!"; // 지역 변수
          System.out.println(message);
      }
      
      void greet() {
          // System.out.println(message); // 오류: 변수에 접근할 수 없음
      }
      

이렇게 멤버 변수와 지역 변수는 객체의 속성과 메소드의 로컬 상태를 나타내는 데 사용됩니다. 이해하기 쉽고 유지보수가 용이한 코드를 작성하기 위해 변수의 범위와 생명주기를 올바르게 이해하고 활용하는 것이 중요합니다.