[Java] #15 멤버 변수/지역 변수

febCho·2023년 11월 10일
0

Java

목록 보기
37/53

앞서 객체에 대해 공부하며 멤버 변수에 대해 알아본 적이 있다.
이번에는 '지역 변수'와 비교하여 알아보자.
참고) 객체(멤버 변수)

멤버 변수와 지역 변수

package kr.s16.object.thistest;

public class LocalVariable {
	//멤버 변수
	int b = 200;
	
	public LocalVariable() {
		int a = 300;//지역 변수
		int c = 500;
		System.out.println("a: " + a);//지역 변수
		System.out.println("c : " + c);//지역 변수
	}
	
	public void make() {
		//지역 변수
		int a = 100;
		System.out.println("a : " + a);//지역 변수
		System.out.println("b : " + b);//멤버 변수
	}
	
	public static void main(String[] args) {
		for(int i=1;i<=5;i++) {//제어문 블럭 안의 지역 변수
			System.out.println(i);
		}
		System.out.println("================");
		//System.out.println(i);
		
		for(int i=1;i<=10;i++) {
			System.out.println(i);
		}
	}
}
  1. 멤버 변수는 클래스 블럭 내에서 생성된 변수를 말한다.
  2. 지역 변수메서드, 생성자, 제어문 블럭 내에서 생성된 변수이며 해당 블럭이 종료되면 소멸한다.
  1. 따라서 LocalVariable 생성자에서 선언된 지역 변수 int a = 300;int c = 500;는 해당 생성자 내에서는 사용 가능하지만, 해당 블럭을 벗어나 호출할 경우 소멸하여 더 이상 호출이 불가하다.

    ① LocalVariable 생성자에서 선언한 변수 a는 지역 변수로 해당 블럭을 벗어나 소멸하였기에 make() 메서드 내에서 a라는 이름을 다시 선언하여 사용할 수 있다.
    ② 클래스 영역에서 선언한 변수 b는 멤버 변수이므로, make() 메서드 내에서 호출해 사용이 가능하다.
    ③ LocalVariable 생성자에서 선언한 변수 c는 해당 블럭을 벗어나 소멸한 상태이므로 make() 메서드 내에서 호출을 시도할 경우 호출이 불가하다.
    지역 변수 소멸

  2. for문 안에서 사용한 변수 i 역시 제어문 블럭 안에서만 사용 가능한 지역 변수로, 출력이 끝난후 System.out.println(i); 다시 호출하려고 시도하면 소멸해서 호출이 불가하다.

  3. 따라서 그 다음 for문에서 변수 i를 다시 사용해도 충돌이 일어나지 않는다.

profile
Done is better than perfect.

0개의 댓글