[java] 클래스와 객체의 멤버 변수와 지역 변수의 차이점은 무엇인가요?
- 멤버 변수 (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"); } }
- 지역 변수 (Local Variables):
- 메소드, 생성자, 블록 내에 선언되어 해당 블록 내에서만 사용됩니다.
- 지역 변수는 스택 메모리에 저장되며, 해당 블록의 실행이 끝나면 메모리에서 소멸됩니다.
- 다른 메소드나 객체에서 접근할 수 없으며, 해당 블록 내에서만 유효합니다.
- 접근 제한자는 사용하지 않으며, 해당 블록 내에서만 사용 가능합니다.
- 예시:
void sayHello() { String message = "Hello!"; // 지역 변수 System.out.println(message); } void greet() { // System.out.println(message); // 오류: 변수에 접근할 수 없음 }
이렇게 멤버 변수와 지역 변수는 객체의 속성과 메소드의 로컬 상태를 나타내는 데 사용됩니다. 이해하기 쉽고 유지보수가 용이한 코드를 작성하기 위해 변수의 범위와 생명주기를 올바르게 이해하고 활용하는 것이 중요합니다.