본문 바로가기

프로그래밍 언어/Java

Java 변수의 종류: 지역 변수, 전역 변수, 정적 변수의 차이점

Java 변수의 종류: 지역 변수, 전역 변수, 정적 변수의 차이점

Java 프로그래밍에서 변수는 데이터를 저장하고 처리하는 핵심 요소입니다. 다양한 변수의 종류를 이해하면 코드의 가독성과 효율성을 높일 수 있습니다. 이 글에서는 지역 변수, 전역 변수, 정적 변수의 특징과 차이점을 자세히 살펴보겠습니다.

 

 

목차

  1. 지역 변수란?
  2. 전역 변수란?
  3. 정적 변수란?
  4. 변수의 범위와 생존 기간
  5. 메모리 할당의 차이
  6. 변수 사용 시 모범 사례
  7. 변수 사용 시 흔한 실수

 

1. 지역 변수란?

지역 변수는 메서드 내부에서 선언되고 해당 메서드가 실행되는 동안에만 사용 가능합니다. 지역 변수는 메모리를 절약할 수 있으며, 특정 작업에만 필요한 데이터를 처리할 때 유용합니다.

public void exampleMethod() {
    int localVar = 10; // 지역 변수
    System.out.println(localVar);
}
    

 

 

2. 전역 변수란?

전역 변수는 클래스 전체에서 접근할 수 있는 변수로, 클래스의 멤버 변수로 선언됩니다. 전역 변수는 여러 메서드 간 데이터를 공유할 때 사용되지만, 지나치게 남용하면 코드의 가독성과 유지보수가 어려워질 수 있습니다.

public class ExampleClass {
    int globalVar = 20; // 전역 변수

    public void methodA() {
        System.out.println(globalVar);
    }

    public void methodB() {
        globalVar = 30;
    }
}
    

 

 

3. 정적 변수란?

정적 변수는 static 키워드로 선언되며, 클래스의 모든 객체가 공유합니다. 정적 변수는 주로 상태를 저장하거나 공통 데이터를 관리하는 데 사용됩니다.

public class StaticExample {
    static int staticVar = 100; // 정적 변수

    public static void increment() {
        staticVar++;
    }
}
    

 

 

4. 변수의 범위와 생존 기간

변수 종류 범위 생존 기간
지역 변수 메서드 내부 메서드 실행 동안
전역 변수 클래스 전체 객체의 생존 기간 동안
정적 변수 클래스 전체 프로그램 실행 동안

 

 

 

 

5. 메모리 할당의 차이

  • 지역 변수: 스택 메모리에 할당됩니다.
  • 전역 변수: 힙 메모리나 클래스 메모리에 저장됩니다.
  • 정적 변수: 클래스 로더가 로드할 때 메모리에 저장되며, 프로그램 종료 시 해제됩니다.

 

 

6. 변수 사용 시 모범 사례

  • 지역 변수를 우선적으로 사용하여 메모리 누수를 방지합니다.
  • 전역 변수는 꼭 필요한 경우에만 사용하며, 적절한 접근 제어자를 설정합니다.
  • 정적 변수는 상태 관리를 위해 신중하게 사용합니다.

 

 

7. 변수 사용 시 흔한 실수

  • 전역 변수의 과도한 사용으로 인해 디버깅이 어려워지는 문제
  • 초기화되지 않은 지역 변수를 사용하는 실수
  • 정적 변수 사용 시 동기화 문제를 간과하는 경우