자바의 정석

필드 Field

야생늑대 2022. 4. 11. 19:09
반응형

 

 CV(class variable  클래스 변수(static 변수, 공유변수)    

  •    클래스 영역에 선언(클래스가 메모리에 올라갈 때 생성 = 객체를 만들 때) 
  •    객체없이도 사용가능하며 공유 변수(shared varible) 라고도 한다.
  •   공통으로 가져야할 속성에 사용된다.
  •     해당 클래스의 모든 인스턴스가 공유해야 하는 값을 유지하기 위해 사용된다.
  •    static 키워드를 가지는 변수

   ex) 카드의 폭과 높이

  • CV는 메소드호출할 때  클래스이름을 풀로 다 적어준다.

  ex) Card c = new Card()          

        c.width = 200;   <--- △ 권장하지 않음,    Card.width = 200;   <-- 권장

 

IV(instance variable)   인스턴스 변수 

  •   클래스 영역에 선언(인스턴스가 생성되었을 때 생성.)
  •   객체가 생성되야 사용 가능하다. 객체 필요.
  •   개별적으로 가지는 속성에 사용된다.
  •  인스턴스마다 가져야 하는 고유한 값을 유지하기 위해 사용된다.
  •  static 키워드를 가지지 않는 변수

ex) 카드의 무늬,숫자 같은 것 

 메소드영역에 생성

LV (local variable)  로컬 변수         

  •  클래스 영역이외의 영역( 메소드, 생성자, 초기화 블록 내부)에 선언
  •   블록내부에서만 사용되고 메소드 종료시 자동제거 됨. 

                 

▶ 필드는 객체의 고유데이터, 객체가 가져야 할 부품, 객체의 현재 상태 데이터를 저장하는 곳이다.

   

{  자동차 객체   }
[고유 데이터]    
[상태 데이터]     [부품]
 제작회사 
      모델      
                     색깔                                      최고속도                         

  현재속도  
        엔진 회전 수          
   차체
    엔진
    타이어

  • 클래스 영역 어디든 선언가능 (메소드,  생성자내부에는 선언 될 수 없다.)
  •  클래스영역에는 선언문만 생성가능하다 ; frint문이나 연산식은 작성할 수 없다.
  • 기본타입과 참조타입 모두 사용할 수 있다.
  • 초기값 없이 선언되더라도 기본값으로 자동 초기화 된다.

22/05/01 추가정리

▶ 클래스 필드와 인스턴스 필드  비교 

클래스 필드는 첫번째 객채에서 1이 추가되어 1이 출력되고, 아무 연산이 없던 두번째 객체에서도 1이 출력되었다.

 클래스필드는 모든 객체가 공유하기 때문이다.

인스턴스 필드는  첫번째 객체에서는 1이 추가되어 1이 출력되었지만, 두번째 객체에서는 연산이 따로 없기 때문에

초기값인 0이 그대로 출력되었다.

 인스턴스 필드는 개별적인 속성을 갖는다. 객체마다 다른 값을 가질 수 있다.

반응형

'자바의 정석' 카테고리의 다른 글

인스턴스 멤버와 정적 멤버  (0) 2022.04.15
메소드 Method  (0) 2022.04.12
생성자 Constructor  (0) 2022.04.12
클래스 Class  (0) 2022.04.11
객체 지향 프로그래밍 기본 개념  (0) 2022.04.10