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 |
댓글