티스토리 뷰

반응형

 

 

 Java 변수의 종류

 

- Java의 변수는 선언 위치에 따라 그 특성이 바뀌게 된다.

 

 

  1. 지역변수 : 클래스 내 메서드 안에서 선언된 변수는 해당 메서드 Scope 안에서만 사용 가능하다. 외부 메서드, 외부 클래스에서 사용 불가능하다. 메서드가 실행될 때 메모리에 할당받으며 메서드가 끝나면 소멸된다.

  2. 인스턴스 변수 : 인스턴스 별로 각자 다른 값을 가질 수 있는 변수로, 사용하기 위해서는 우선 인스턴스가 선언 되어야 한다.

    (예) 우테코 3기 2주차 자동차 경주 과제에서 Car 인스턴스가 갖는 position 변수는 각 인스턴스가 각자 다른 값을 갖는 인스턴스 변수이다.

  3. 클래스 변수 : 인스턴스 변수와 다르게 클래스 자체가 갖는 변수이다. 선언 방법은 변수 선언에 static을 붙이는 것으로 모든 인스턴스가 공유된 값을 갖는다(static을 붙이면 인스턴스화 하지 않아도 해당 변수를 사용 가능하다. static하지 않은 변수를 static 메소드 안에서 사용하면 문제가 발생한다.). 즉, 클래스 자체 내에서 찍혀나오는 변수이므로 같은 클래스에서 나온 인스턴스들은 같은 클래스 변수를 갖는다. 클래스가 로딩될 때 생성되어 메모리에 딱 한번 올라간다. 종료될 때까지 메모리에 남으므로 static에 더해 public을 붙이면 다른 클래스에서도 사용가능한 전역변수가 된다.

 

- 상수를 선언할 경우 한번 선언하여 오버라이드 하지 않기 때문에 final을 붙여 선언하고, 각 인스턴스가 생성될 때마다 메모리를 잡고 초기화되지 않고 클래스 레벨에서 한번만 잡고 쭉 사용하면 되므로 static을 붙여 클래스 변수로 만드는 것이 관례이다. 즉, 상수는 static final로 선언한다.

 

- 클래스 변수는 하나의 공간을 공유하므로 여러 인스턴스에서 접근해서 변경했을 경우 같은 클래스에서 나온 다른 인스턴스의 클래스 변수에도 영향을 미친다. 그래서 클래스 변수 사용시는 인스턴스.메서드(); 로 사용하는 것이 아니라 클래스.메서드(); 로 사용한다.

 

 

 

 

참조 : https://itmining.tistory.com/20
반응형
댓글