변수
변수의 종류
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 |