/*
* 클래스 == "필드" + 생성자 + 메소드 의 조합
*
* >> 변수구분
*
* - 전역변수 : 클래스 영역에 바로 선언하는 변수 --> 클래스 내에서면 어디서든 사용 가능
* - 지역변수 : 클래스 영역안의 어떤 특정한 구역 ({})에 선언하는 변수 --> 그 지역에서만 사용 가능
* 메소드, 제어문(if, for) 등등
*
* 1. 전역변수
* - 멤버변수 (인스턴스 변수)
* 생성 시점 : new 연산자를 통해서 객체 생성 시 멤버변수 --> 메모리 할당
* 소멸 시점 : 객체 소멸 시 같이 소멸
*
* - 클래스변수 (static 변수) : static이라는 예약어가 붙은 변수
* 생성 시점 : 프로그램 실행(해당 객체 생성이 안되도)과 동시에 무조건 static 메모리 영역에 할당
* 소멸 시점 : 프로그램이 종료될 때 소멸
* >> 클래스변수는 어떤걸 의미하냐면 프로그램 실행과 동시에 메모리에 올려놓고 공유하면서 쓸 목적으로 선언하는거임!!
*
* 2. 지역변수
* 생성 시점 : 특정한 구역({}) 실행(호출)시 메모리 영역에 할당 (ex. 메소드 실행시)
* 소멸 시점 : 특정한 구역({}) 종료 시 소멸 (ex. 메소드 종료시)
*
*/
//변수선언 위치에 따른 구분을 보기 위한 클래스 ( 전역, 지역, 매개)
public class FieldTest1 {
//멤버변수(인스턴스변수) == 필드부
private int global; // 전역변수인 --> 멤버
public FieldTest1() {
//기본 생성자
}
public void test(int num) { //test 메소드 영역 시작
//지역 변수 (특정 구역 즉, 메소드 영역내에서 작성하는 변수)
int local = 10; // 요런게 지역변수// 지역안에서 만쓰기에 접근 제한자를 쓰지 않아요.
//num -> 매개변수 (메소드 괄호 안에 작성하는 변수 ), 일종의 지역변수, 이메소드 영역내에서만 사용
//멤버변수 출력 - > 전역변수는 클래스 전역에서 사용가능하고// 미초기화시 JVM 이 기본값으로 초기화 한다
System.out.println(global); // 자료형 기본값 : 0 run 실행하면 0 이 나오는...
//지역변수 출력 -> 지역변수는 반드시 초기화를 해야 한다
System.out.println(local); ///위에 세팅한 값으로 출력 10 이 된다.
//매개변수 출력 - > 매개변수는 메소드 호출시 반드시 값이 전달 되어야 한다.
System.out.println(num); //run 에서 넣은 값을 호출받아 출력
}//test메소드 끝 -->
//지역변수 모두 소멸
}