728x90
반응형
안녕하세요. 스마트 팩토리입니다.
변수에는 클래스 영역의 클래스 변수와 인스턴스 변수가 있고, 메서도 영역에 지역변수가 있습니다. 이번 시간에는 클래스 변수(class, stactic variable)와 인스턴스 변수(instance variable)에 대해 알아보겠습니다.
1. 클래스 변수(class, stactic variable)와 인스턴스 변수(instance variable)
가. 클래스 변수 와 인스턴스 변수
(1) 클래스 변수(class, stactic variable)
- 클래스 영역에서 클래스가 메모리에 올라갈때 생성되는 변수로 공통변수, 공유변수라고도 한다.
- 같은 클래스에서 모든 객체가 공유하는 변수
- 인스턴스(객체) 생성 없이 '클래스명. 클래스변수명'으로 접근
-클래스 로딩시 생성되고 프로그램 종료시 사라짐.
(2)인스턴스 변수(instance variable)
- new 연산자로 생성되는 객체 변수
-독립적인 저장 공간을 가진다.
- 객체 생성 후, '참조변수명.인스턴스 변수명' 으로 접근 ('객체명.인스턴스변수명')
- 객체 생성후, 참조변수가 참조를 하지 않으면 자동 쓰레기 인스턴스가 되어 가비지 컬렉터(Garbage Collect)에 의해서 자동으로 사라짐.
-무한으로 다른 값을 저장할 수 있음( 객체는 무한으로 만들 수 있다)
나. 클래스 변수와 인스턴스 변수 예시
<<card.java>>
card. java 클래스 파일을 먼저 생성하였습니다.
카드 클래스에서 cname, cnum 으로 인스턴스 변수를 만들고 static int width, static int height 클래스 변수를 만들었습니다. 인스턴스 변수는 변수 선언만 이루어진 것을 알 수 있고, 클래스 변수는 그에 해당하는 값까지 제시된 것을 알 수 있습니다.
package Ex01;
class card {
String cname;
int cnum;
static int width=250;
static int height=100;
}
<<cardEx.java>>
card 클래스를 활용하여 cardEx작성하였습니다.
클래스 변수는 card.height, card.width(클래스명.클래스 변수명)처럼 클래스 변수명을 이용하여 해당변수를 접근합니다.
인스턴스 변수는 클래스 파일을 new 연산자를 활용하여 참조할때 (참조변수명.인스턴스 변수명) 비로소 생성됩니다.
package Ex01;
public class cardEx {
public static void main(String[] args) {
System.out.println("공통 card.width="+card.width+"card.height="+card.height);
card c1=new card();
c1.cname="국민 love";
c1.cnum=1;
card c2=new card();
c2.cname="국민 save";
c2.cnum=2;
System.out.println("c1 카드명 :"+c1.cname+", c1 카드번호"+c1.cnum);
System.out.println("c2 카드명 :"+c2.cname+", c2 카드번호"+c2.cnum);
}
}
cardEx,java를 실행한 결과입니다.
변수의 범위에서 클래스 변수와 인스턴스 변수의 차이를 이해하는 시간을 가져보았습니다.
728x90
반응형
'Java' 카테고리의 다른 글
자바 중급 008. 메서드 정의 와 작성 지침 예시- 메서드 구현(. 연산자, ctrl+space:자동완성기능) (0) | 2021.08.16 |
---|---|
자바 중급 007. 클래스 변수 와 인스턴스 변수 , 지역변수(로컬변수 :local variable) -클래스 내 메서드 선언과 생성, 적용하는 방법 (0) | 2021.08.14 |
자바 중급 005. 클래스와 객체 - Tv 클래스, 객체 하나의 파일에서 작성하기 , 객체 생성 및 사용 (0) | 2021.08.11 |
자바 중급 004. 클래스와 객체 - Tv 모니터 클래스, 모니터 객체 - 전원, 채널, 볼륨 조절하기 (0) | 2021.08.11 |
자바 중급 003. 클래스와 객체 - 더하기 연산 클래스 메소드 (0) | 2021.08.09 |
댓글