💁♀️ 클래스에서의 변수(Kinds of Variable)란,
클래스 변수, 멤버 변수(인스턴스 변수), 지역 변수를 통칭
- 클래스 변수
: static 키워드를 가지고 필드에 선언하는 변수, 메모리의 static영역 사용- 멤버 변수(인스턴스 변수)
: static 키워드 없이 필드에 선언하는 변수, 메모리의 heap영역 사용- 지역 변수
: 메소드, 생성자, 초기화 블록 내부에서 선언하는 변수
public class KindsOfVariable {
>>> 클래스 영역에 작성하는 변수 : 필드
>>> non-static field : '인스턴스 변수' (인스턴스 생성 시점에 사용 가능한 변수라는 의미)
>>> 객체가 할당될 때 사용가능한 변수
private int globalNum;
>>> static field : '클래스 변수(정적 필드)' (정적 메모리 영역에 생성되는 변수라는 의미)
private static int staticNum;
public void testMethod(int num) { >>> int num : 매개변수이자 지역변수
>>> 메소드 영역에서 작성하는 변수 : 지역 변수 (매개변수도 지역 변수의 일종)
>>> 지역변수는 메소드 호출 시, stack에 공간을 할당 받아 생성됨
int localNum;
>>> 매개변수는 호출 시 값이 넘어와서 변경되기 때문에 초기화가 필요없음
System.out.println(num);
// System.out.println(localnum);
>>> 지역변수는 선언 외에 다시 사용하기 위해서는 반드시 초기화 되어야한다.
>>> 전역 변수는 클래스 전역에서 사용 가능
System.out.println(globalNum);
System.out.println(staticNum);
}
public void testMethod2() {
>>> 지역 변수는 해당 지역(블럭 내)에서만 사용 가능하다.
// System.out.println(num);
// System.out.println(localNum);
System.out.println(globalNum); >>> 전역변수이기 때문에 여기서도 사용가능
System.out.println(staticNum); >>> 전역변수이기 때문에 여기서도 사용가능
}
}