1.지역 변수 (Local Variables):정의:
메소드나 블록 내에서 선언된 변수
선언된 블록 내에서만 사용 가능
특징:
메소드나 블록이 실행될 때 생성되고, 종료될 때 소멸됨
다른 메소드에서 접근할 수 없음
초기화하지 않으면 사용할 수 없음
예시:java:
public void exampleMethod() { int localVar = 10; // 지역 변수 System.out.println(localVar); } // localVar는 여기서 소멸됨
2. 전역 변수 (Global Variables):
자바에서는 strict한 의미의 전역 변수가 없지만, 이와 유사한 개념으로 클래스 변수(static 변수)와 인스턴스 변수가 있습니다.
클래스 변수 (Static Variables):
클래스 내에서 static 키워드로 선언된 변수
모든 객체가 공유하는 변수
클래스가 메모리에 로드될 때 생성되고, 프로그램이 종료될 때 소멸됨
예시:java:
public class Example { static int classVar = 0; // 클래스 변수 }
인스턴스 변수 (Instance Variables):
클래스 내에서 선언되지만 메소드 밖에서 선언된 변수
각 객체마다 별도의 복사본을 가짐
객체가 생성될 때 생성되고, 객체가 소멸될 때 함께 소멸됨
예시:java:
public class Example { int instanceVar; // 인스턴스 변수 public void setVar(int value) { this.instanceVar = value; } }
3. 비교
스코프:
지역 변수: 선언된 블록 내에서만 접근 가능
클래스/인스턴스 변수: 클래스 전체에서 접근 가능
라이프타임:
지역 변수: 메소드 실행 동안만 존재
클래스 변수: 프로그램 실행 전체 기간 동안 존재
인스턴스 변수: 객체가 존재하는 동안 존재
메모리 할당:
지역 변수: 스택 메모리에 할당
클래스/인스턴스 변수: 힙 메모리에 할당
4. 주의사항
- 변수 이름 충돌을 피하기 위해 지역 변수와 인스턴스 변수의 이름을 다르게 하는 것이 좋습니다.
- 필요 이상으로 넓은 스코프의 변수를 사용하면 코드의 복잡성이 증가할 수 있습니다.
5. 좋은 프랙티스
- 변수의 스코프는 가능한 한 좁게 유지하는 것이 좋습니다.
- 전역 변수(클래스 변수)의 사용은 필요한 경우로 제한하는 것이 좋습니다.
이러한 변수 개념을 이해하고 적절히 사용하면 코드의 구조와 가독성을 개선할 수 있으며, 메모리 관리도 더 효율적으로 할 수 있습니다.
'Java' 카테고리의 다른 글
C와 Java의 형변환(캐스팅) 비교 (1) | 2024.10.23 |
---|---|
C와 Java의 표준 출력 비교 (0) | 2024.10.23 |
Java의 public static void main(String[] args)와 C 언어의 main(int argc, char *argv[]) 함수 (1) | 2024.10.18 |
Java에서 '메소드'라고 부르고 C에서 '함수'라고 부르는 이유 (0) | 2024.10.18 |
Java Collections Framework Example (1) | 2024.10.17 |