[Java] 선언 위치에 따른 변수의 종류
본문 바로가기
Java

[Java] 선언 위치에 따른 변수의 종류

by IYK2h 2022. 12. 5.
728x90

선언 위치에 따른 변수의 종류

public class Class {
​
  int iv; // 인스턴스 변수 (Instance Valiable)
  static int cv; // 클래스 변수(Class Valiable)
  
  void method() {
    int lv; // 지역 변수(Local Valiable)
  }
}

인스턴스 변수

  • 클래스 내에 선언된 변수
  • 인스턴스 변수는 인스턴스가 생성될 때 생성된다. 객체 생성 시마다 새로운 변수가 생성된다.
  • 인스턴스 별로 다른 값을 가질 수 있다. 즉, 각각의 인스턴스 변수마다 고유의 값을 가진다.

클래스 변수

  • 인스턴스 변수에 Static 키워드만 붙여주면 된다.
  • 인스턴수 변수와 다르게 공통된 값을 공유하게 된다.
  • 클래스가 메모리에 올라갈 때 부터 프로그램이 종료될 때까지 유지된다.
  • 클래스가 여러 번 생성되어도 Static 변수는 딱 한 번만 생성된다. 메모리에 딱 한 번만 올라간다.
  • 동일한 클래스의 모든 객체들에 의해서 공유된다. 즉, 전역 변수가 된다.

지역 변수

  • 메서드 내에서 선언되며 메서드 내에서만 사용할 수 있는 변수
  • 메서드가 실행될 때 메모리를 할당 받으며 메서드가 끝나면 소멸된다.

클래스 변수와 인스턴스 변수 차이

카드의 공통 속성 ( 클래스 변수 )

  • 카드의 폭
  • 카드의 높이

카드의 개별 속성 ( 인스턴스 변수 )

  • 무늬
  • 숫자
class Card {
  String kind;
  int number;
  static int width = 100;
  static int width = 250;
}
Card c = new Card();
c.kinf = "Heart";
c.number = 5;
Card.width = 200; //c.width는 사용 가능하지만 권장 하지 않음
Card.height = 300;//이유는 오해하기 쉽다.

 

Reference : https://youtu.be/frKHrnsCoS4

728x90

'Java' 카테고리의 다른 글

[Java] super, package, import, modifier, polymorphism  (2) 2022.12.23
[Java] Optional<T>  (0) 2022.12.08
[Java] Stream, 스트림 생성  (0) 2022.11.30
[Java] 람다식 ( Lambda Expression )  (0) 2022.11.29
[Java] 예외 처리  (0) 2022.11.24

댓글