본문 바로가기
기초 및 언어/▶ Java&JSP

12. 변수

by 류딩이 2025. 8. 18.
class Var{
	static int a; // static 변수
	int b; // 인스턴스 변수
	public void increment() {
		// 지역 변수: 메서드 호출 때마다 새로 생성(항상 0에서 시작)
		int c=0; // 반드시 초기화를 해주어야함!! c=0 <초기화
		a+=1;  // 모든 객체에 공통으로 반영
		b+=1;  // 이 객체(v1 등)에만 반영
		c+=1;  // 호출마다 1로 출력됨
		
		System.out.println("static 변수 a: " + a);
		System.out.println("인스턴스 변수 b: " + b);
		System.out.println("지역 변수 c: " + c); // 지역변수는 메서드가 시작할떄마다 c는 계속 0으로 초기화
		System.out.println();
	}
}	
	
	public class Ex06_변수 {

		public static void main(String[] args) {
			System.out.println("객체 1 생성");
			Var v1 = new Var();
			v1.increment();  // a=1, b=1, c=1

			System.out.println("객체 2 생성");
			Var v2 = new Var();
			v2.increment(); //a=2, b=2, c=1

			System.out.println("객체 2 생성");
			Var v3 = new Var();
			v3.increment(); // a=3, b=3, c=1

			System.out.println("객체 2 생성");
			Var v4 = new Var();
			v4.increment(); // a=4, b=4, c=1
		}
	}

 

 

📌 정리

  • static 변수 a → 모든 객체가 공유, 1 → 2 → 3 → 4 계속 누적
  • 인스턴스 변수 b → 객체마다 따로 관리, v2, v3, v4는 새 객체라 0부터 시작해서 각각 1
  • 지역 변수 c → 메서드 호출 시마다 새로 생성되므로 매번 1

 

Java변수 정리

1. 선언 위치/생성 시점에 따른 분류

변수 종류 선언 위치 메모리 영역 생성 시점 / 소멸시점 특징
지역 변수 (Local Variable) 메서드, 생성자, 블록 내부 스택(Stack) 메서드 호출 시 생성 / 종료 시 소멸 반드시 초기화 후 사용해야 함
매개변수 (Parameter) 메서드의 () 안 스택(Stack) 메서드 호출 시 인자 전달 / 종료 시 소멸 지역 변수와 동일한 성격, 호출 시 값(또는 참조값) 전달
인스턴스 변수 (Instance Variable) 클래스 안, 메서드 밖 (static X) 힙(Heap) 객체 생성 시 생성 / GC 시 소멸 객체마다 독립적으로 존재, 기본값 자동 초기화
클래스 변수 (Static Variable) static 키워드로 선언 메서드 영역(Method Area) 클래스 로딩 시 생성 / 프로그램 종료 시 소멸 모든 객체가 공유, 한 번만 생성됨

 

 

2. 데이터 타입에 따른 분류

종류 설명 예시
기본형 변수 (Primitive Type) 실제 값을 저장하는 변수 (8가지) int num = 10;
참조형 변수 (Reference Type) 객체의 주소값을 저장하는 변수 String str = "Hello"; , int[] arr = new int[3];

 

 

3. 특수 키워드/용도에 따른 분류

종류 설명 예시
final 변수 (상수, Constant) 한 번 값이 할당되면 변경 불가 final double PI = 3.14;
멤버 변수 (Member Variable) 클래스 안에 선언된 변수 전체를 의미 (인스턴스 + static 포함) class A { int x; static int y; }
전역 변수(Global처럼 쓰임) 자바에는 엄밀히 없음. static 변수를 전역처럼 사용 가능 static int count;

 

 

📌 한 줄 요약

  • 지역/매개변수 → 메서드 실행 중에만 살아있음
  • 인스턴스 변수 → 객체마다 따로 존재
  • static 변수 → 클래스가 공유 (전역처럼 사용 가능)
  • 참조 변수 → 객체의 주소 저장
  • final 변수 → 한 번 값 지정되면 변경 불가

 

'기초 및 언어 > ▶ Java&JSP' 카테고리의 다른 글

14. Math  (2) 2025.08.18
13. 재귀호출  (3) 2025.08.18
11. 배열넘기기  (0) 2025.08.18
10. 클래스  (3) 2025.08.14
09. 2차원  (7) 2025.08.14