변수

지윤·2021년 1월 19일
0

Java

목록 보기
2/21

선언위치에 따른 변수

  1. 클래스 영역 - 인스턴스 변수, 클래스 변수
  2. 메소드 영역 - 지역변수

클래스 영역에서는 선언문만 가능

{ 
	int iv; 		//인스턴스 변수
    	static int cv;  //클래스 변수(static 변수, 공유변수)
    
    	void method(){
    	int lv = 0; //지역변수 
    }
}

클래스 변수 - 클래스가 메모리에 올라갈 때 생성(.class 파일이 올라갈 때), 객체 생성이 필요 없으므로 아무때나 사용 가능

인스턴스 변수 - 인스턴스가 생성될 때 생성, 객체 생성이 필요하며 객체가 있어야 사용 가능

지역변수 - 변수 선언문이 수행되었을 때 생성, 메서드 종료시 자동 제거

객체는 인스턴스 변수를 묶은 것, 참조변수가 사라지면 가비지 컬렉터에 의해 인스턴스 변수도 사라진다.


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

클래스 변수 - 공통 속성
인스턴스 변수 - 개별 속성

class Card{
    String kind; //무늬
    int number; //숫자
    
    static int width = 100;
    static int height = 250;
    
}

Card c = new Card();
c.kind = "HEART";
c.number = 5;

//c.width = 200; 
Card.width = 200; //클래스 변수는 이렇게 사용

변수의 초기화

  • 지역변수는 수동(직접) 초기화 해야한다.
  • 인스턴스 변수는 자동 초기화 되며, 대부분 0으로 초기화 된다.

멤버변수(인스턴스 변수, 클래스 변수) 초기화

  1. 명시적 초기화(=)
  2. 초기화 블럭(복잡한 초기화에 사용)
    • 인스턴스 초기화 블럭: {} (사용X)
    • 클래스 초기화 블럭: static{}
  3. 생성자(복잡한 초기화에 사용)

초기화 방법

  • 자동 초기화 - 0으로 초기화
  • 간단 초기화 - 명시적 초기화
  • 복잡 초기화 - 초기화 블럭, 생성자

초기화 시점

  • 클래스 변수 초기화 시점: 클래스가 처음 로딩될 때 한번
  • 인스턴스 변수 초기화 시점: 인스턴스가 생성될 때 마다

초기화 순서

  1. 클래스 초기화
  2. 인스턴스 초기화(자동->간단->복잡 순)
profile
헬로🙋‍♀️

0개의 댓글