[Java][국비교육] Day 12

Ga02·2023년 1월 11일

국비교육

목록 보기
11/82

🔍 클래스에서 사용되는 변수의 유형

➰ 인스턴스 변수, Instance Variable

  • 클래스 안에 선언해놓은 일반적인 멤버필드에 의해 만들어지는 변수
  • 객체를 생성할 때마다 각 인스턴스가 만들어지는 변수공간 👉🏻 인스턴스가 살아있는 동안 유지됨
    👉🏻 동적 할당 연산자 new
    ➡ 참조가 끊기면 GC가 동작할때까지 살아있다가 GC에 의해 지워짐
    ->HIP영역(GC의 활동영역)

➰ 클래스 변수, Class Variable

->Code, Data 영역

  • static 키워드를 적용한 멤버필드에 의해 만들어지는 변수 👉🏻 ststic은 공통의 변수이므로 public 적용
  • 프로그램 동작 전(static한 정적 시점)에 미리 변수공간을 생성하여 사용할 수 있는 준비를 마침
  • 클래스당 한 개의 변수공간을 생성 👉🏻 같은 변수를 여러 객체에서 나눠 씀 ➡ 변수공간이 하나이므로 값도 동일하게 하나
  • final로 선언해서 상수형식으로 사용하는 경우가 많음
  • 사용할 때 [클래스명].[클래스변수명] 형식으로 사용 👉🏻 static 변수에 static하게 접근하는 방법
public class ClassVariable_02 {

	//인스턴스 변수
	private int num;

	//클래스 변수
	public static String city = "Seoul";
}
-------------------------------------------------
public class ClassVariableEx {
	ClassVariable_02 cv01 = new ClassVarialbe_02();
	ClassVariable_02 cv02 = new ClassVarialbe_02();
    
    cv01.setNum(12345);
	System.out.println(cv01.getNum());12345
	System.out.println(cv02.getNum());0
    //인스턴스 변수라서 각각 생성된 객체 내에 변수공간이 따로 존재
    
	ClassVariable_02 cv03 = new ClassVarialbe_02();
	ClassVariable_02 cv04 = new ClassVarialbe_02();  
 
 	cv03.city = "Busan";
	System.out.println(cv03.city);Busan
    System.out.println(cv04.city);Busan
    //city는 static으로 제한한 클래스 변수라 여러 객체가 있어도 변수공간은 단 하나만 존재 ➡ 값을 변경하면 다른 객체에서도 영향을 받음
    //static 변수는 static한 방식으로 접근해야 함
    
    ClassVariable_02.city = "Incheon";
    //클래스 변수(정적변수)를 정적인 방법으로 접근
}

➰ 지역변수, Local Variable

->Stack영역

  • 메소드 안에서 선언된 변수 👉🏻 매개변수도 지역변수로 취급됨
  • 접근제한자를 설정할 수 없음
  • 메소드가 호출되어 선언코드를 실행할 때 만들어지고, 종료될 때 메모리에서 지워짐 👉🏻 호출될 때마다 만들어졌다 지워졌다 반복

profile
IT꿈나무 댓츠미

0개의 댓글