클래스변수 & 인스턴스변수 & 지역변수

2024. 10. 18. 17:33java

 

변수의 종류 (클래스, 인스턴스, 지역)

 

class Person{

int age;                          // 인스턴스 변수

static String name;       // 클래스 변수

 

void move() {

int i = 0;                      // 로컬변수

System.out.println(name + "is moveing" + i);

}

 

 

※ 선언위치 중요!
인스턴스 변수, 클래스 변수 클래스 안에서 선언되었기 때문에 멤버 변수

로컬 변수 같은 경우는 메서드 안에서 선언되었기 때문에 지역 변수

 

static은 클래스를 사용하는 내내 고정되어 있는 변수라면 static을 붙여 클래스 변수로 사용

- static 있을 경우: 클래스 변수

- static 없을 경우: 인스턴스 변수

 

선언 위치 선언 방법
인스턴스 변수
클래스 영역
-
클래스 변수 static을 붙임
지역 변수 메서드 내부, 등등... -

 

인스턴스 변수​

클래스 영역에서 선언

Person person1 = new Person() 으로 인스턴스를 생성해 준 후에야

person1.age 와 같이 변수에 접근 가능

 

 

클래스 변수​

클래스 변수는 클래스 영역에서 선언을 해주고 앞에 static을 붙여주시면 되는데요

인스턴스를 생성하지 않아도 사용이 가능

모든 인스턴스가 같은 변수를 공유한다

 

아무런 인스턴스도 만들어 주지 않았는데 Person.name으로 접근이 가능

앞서 인스턴스 변수의 경우에는 인스턴스 이름.변수이름 으로 접근

클래스 변수는 클래스이름.변수이름으로 접근

 

 

​지역변수

마지막 지역 변수는 클래스 내부에서 선언된게 아닌  생성자나 메서드 내부 등등에서 선언된 변수

이 변수들의 특징은 해당 메서드가 사용될때만 쓰임

선언 위치
선언 방법
생성시기
인스턴스 변수
클래스 영역
-
클래스 선언시
클래스 변수
static을 붙임
인스턴스 생성시
지역 변수
메서드 내부, 등등...
-
메서드 실행시