본문으로 바로가기

[JAVA] 변수

category Helloworld!/JAVA 2016. 6. 1. 22:57

- 변수 : 하나의 데이터를 저장할 수 있는 공간

- 배열 : 같은 종류의 여러 데이터를 하나의 집합으로 저장할 수 있는 공간

- 구조체 : 서로 관련되 여러 데이터를 종류에 관계없이 하나의 집합으로 저장할 수 있는 공간

- 클래스 : 데이터와 함수의 결합(구조체 + 함수)


1. 변수

- 변수는 클래스 변수, 인스턴스 변수, 지역 변수 모두 세 종류.

- 변수의 종류를 결정짓는 요소는 '변수의 선언된 위치' 이므로 변수의 종류 파악하기 위해서는 변수가 어느 영역에 선언되었는지 확인하는 것이 중요


1) 인스턴스 변수 

- 멤버 변수 중에 static 이 붙지 않은 것

- 생성시기는 인스턴스가 생성되었을 때

- 독립적인 저장공간을 가짐으로 서로 다른 값을 가질 수 있음.

- 인스턴스마다 고유한 상태를 유지해하는 속성의 경우 사용


2) 클래스 변수 

- 멤버 변수 중에 static 이 붙은 것

- 생성시기는 클래스가 메모리에 올라갈때 생성됨

따라서, 한 클래스의 모든 인스턴스들이 공통적인 값을 유지하는 속성의 경우 사용

- 클래스 변수는 인스턴스와 달리 모든 인스턴스가 공통된 저장공간을 공유하게 된다. (그래서 공유변수라고도 함)

- 클래스가 로딩될 때 생성되서 프로그램이 종료 될 때 까지 유지되며, public을 앞에 붙이면 같은 프로그램 내에서 어디서나 접근할 수 있는 전역변수(global variable)의 성격을 갖고 있다.


3) 지역변수 

- 멤버 변수를 제외한 나머지 변수

- 생성시기는 변수 선언문이 수행되었을 때이다.

- 매서드 내에 선언되어서 메서드 내에서만 사용 가능. 메서드가 종료되면 소멸되어 사용할 수 없다.

- 또는 for이나 while 같은 블럭 내에 선언된 지역변수는 블럭{} 내에서만 사용가능하다.

class Variables {
    int iv; //인스턴스 변수
    static int cv; //클래스 변수(static 변수, 공유변수)

    voide method() {
        int lv = 0; //지역변수 
    }
}
Variables 안에 있는 iv, cv는 클래스 영역에 있으므로 멤버변수 lv는 메서드 영역에 있으므로 멤버변수가 아니므로 지역변수 이다.


- 변수의 이름을 지을 때는 다음과 같이 지켜야 할 몇가지 규칙이 있다.
1) 변수명은 숫자로 시작할 수 없다.
2) _(underscore) 와 $ 문자 이외의 특수문자는 사용할 수 없다.
3) 자바의 키워드는 변수명으로 사용할 수 없다. (예: int, class, return 등)

참고. 자바키워드