본문 바로가기
프로그래밍 언어/JAVA

[JAVA] 변수의 종류, 멤버변수/지역변수/클래스변수

by 느링 2017. 8. 6.

변수

변수의 종류

1멤버변수(=전역변수)

클래스 안에서 선언되며, 인스턴스 생성 시(객체 생성시) 생성됨

2지역변수(Local Variable) 생성자, 메소드

-메소드안에서 선언되며, 메소드가 실행(호출) 될 때 stack영역에 생성, 종료와 함께 소멸

**반복문의 블럭{ } 내에 선언된 지역변수는 블럭을 벗어나면 소멸

-기본적으로 초기화 되어있지 않음, 기본값이 없기 때문에 항상 값을 대입해서 사용해야 함

-메인메소드 안에 선언된 변수는 모두 지역 변수

-지역변수 앞에 final이 붙으면 선언 할 때를 제외하고는 값의 변경이 안된다.

*final변수란?

3클래스 변수

클래스 안에서 선언되며, 클래스가 메모리에 올라갈 때 생성됨(객체 생성없이 접근가능)

static은 멤버변수 앞에 static붙이는 것으로 static(메소드)영역에 생성되고, 클래스 이름으로 가도 되고 객체 이름으로 가도 된다. 모든 객체들이 공통으로 공유 가능

 

 

<static 초기화>

-클래스가 처음 호출 될 때 한번만 수행되는 문장

-static 변수 사용은 가능, 일반 멤버 변수는 사용 할 수 없다.

-static 변수는 주인이 클래스 이지만, 일반 멤버 변수는 주인이 객체이다.

-객체는 클래스를 가지고 생성한다.

 

 

 

 

멤버변수(Member Variable)

-멤버변수는 클래스 안에 선언된 변수로 객체가 각자 소유

-객체만 접근 가능하다

 

static 변수(전역변수, 클래스 변수)

-클래스 안에 static이라는 키워드와 함께 선언된 변수로 클래스가 소유해서 공유한다.

*공유 : 클래스와 객체 모두 접근 가능하다는 의미

 

static final은 세트이다. 필드라는 이름이 나오면 static final!

 

final을 쓰면 어차피 값을 바꾸지 못하므로 모든 객체에서 final변수를 다 복사해서 갖다 쓰면 결국 메모리 낭비이고 중복이다. 그래서 보통 final은 static과 같이 사용한다.

 

'프로그래밍 언어 > JAVA' 카테고리의 다른 글

[JAVA] 상속/super  (0) 2017.08.18
[JAVA] 생성자  (0) 2017.08.17
[JAVA] 접근 제어자 & 그 외 제어자  (0) 2017.08.04
[JAVA] 클래스의 구조 / this  (0) 2017.08.03
[JAVA] 오버 로딩 & 오버 라이딩  (0) 2017.08.02