이 글은 변수가 어떤 이름으로, 어디서 사용하는지를 정리하기 위해 작성한 글입니다.
추가적인 내용들은 다음 글에서 작성하도록 하겠습니다.
설명할 내용은 두 가지입니다.
1. 변수의 정의
2. 변수의 종류
그럼 바로 시작하겠습니다.
1. 변수의 정의
쉽게 설명하면 변수는 변하는 수입니다.
값을 저장할 수 있는 메모리의 특정 주소에 붙이는 이름으로 프로그램은 변수를 통해 메모리의 특정 주소에 값을 저장하고 읽을 수 있습니다.
그래서 우리가 메모리에 값을 저장하고 싶다면 변수를 선언하고 변수에 값을 지정합니다.
그러면 메모리의 어디에 저장하고 어떤 방식으로 저장할지는 프로그래밍 언어와 운영체제가 정합니다.
자바에서는 JVM이 하는 일입니다.
우리가 할 일은 3단계의 과정을 통해 변수를 사용합니다.
1. 변수 선언
2. 변수 초기화(변수의 값 저장)
3. 변수 사용
1. 변수 선언
변수 선언은 변수의 자료형을 선택하고 이름을 정하는 단계입니다.
자료형 변수명;
2. 변수 초기화(변수의 값 저장)
변수의 초기화 또는 변수의 값 저장은 변수에 값을 넣는 단계입니다.
변수를 선언해도 해당 변수에는 값이 없기 때문에 사용하고자 하는 값을 대입합니다.
변수명 = 값;
추가적으로 변수의 선언과 초기화는 한 번에 하는 것도 가능합니다.
자료형 변수명 = 값;
3. 변수 사용
변수 사용은 변수의 값을 읽거나 변경하는 단계입니다.
주로 출력문이나 연산식 내부에서 사용되어 변수에 저장된 값을 출력하거나 연산에 사용됩니다.
이해를 돕기 위해서 예를 하나 들어보겠습니다.
먼저 우리는 '나이'를 표현하기 위해 'age'라는 이름의 변수를 선언합니다.
이때 나이는 정수형 타입이기 때문에 age 라는 변수명 앞에 'int'라는 데이터 타입을 함께 작성합니다.
다음으로 age의 우항에 값을 넣습니다.
마지막으로 실제로 변수를 사용합니다.
public class Variable {
public static void main(String[] args) {
int age; // 1. 변수의 선언
age = 1; // 2. 변수 초기화(값 저장)
System.out.println(age); // 3. 변수 사용
int age = 1; // 1. 변수의 선언 + 2. 변수 초기화(값 저장)
System.out.println(age); // 3. 변수 사용(출력문 사용)
}
}
2. 변수의 종류
변수는 사용 위치에 따라서 이름이 조금씩 다릅니다.
이 내용들은 연산자, 객체 등을 공부하고 난 뒤에 봐도 무방합니다.
어떤 위치에 어떻게 사용되는지만 알고 가도 괜찮다고 생각합니다.
변수에는 다음과 같은 종류가 있습니다.
1. 로컬 변수
2. 매개 변수
3. 클래스 멤버 변수(필드)
4. 참조 변수
5. static 변수
기본적으로 자바의 모든 변수는 중괄호 { } 블록 내에서 선언되고 사용됩니다.
변수는 블록 내 어디에서든 선언할 수 있지만, 변수 사용에는 제한이 따릅니다.
1. 로컬 변수
로컬 변수는 생성자, 메소드 블록 내에서 선언된 변수로, 해당 블록 내부에서만 사용되고 메소드 실행이 끝나면 메모리에서 자동으로 없어집니다.
예를 들어보겠습니다.
public class LocalVariable{
public static void main(String[] args) {
int age1; // main 블록에서 선언
if() {
age2; // if 블록에서 선언
// age1, age2 사용 가능
} // if 블록
for() {
age3; // for 블록에서 선언
// age1, age3 사용 가능
} // for 블록
// age1만 사용 가능
} // main 블록
}
이와 같이 { } 블록 내에서 선언된 변수는 { } 안에서만 사용 가능합니다.
age1은 main 블록에서 선언되었습니다.
age2는 if 블록에서 선언되었습니다.
age3은 for 블록에서 선언되었습니다.
if 블록과 for 블록은 main 블록 내에 속하기 때문에 if 블록과 for 블록 안에서 age1을 사용할 수 있지만
age2는 for 블록에서, age3은 if 블록에서 사용할 수 없습니다.
2. 매개 변수
매개 변수는 함수의 입력으로 받는 변수로, 메소드가 실행할 때 필요한 데이터를 외부로부터 받기 위해 사용합니다.
메소드에서 매개 변수가 필요한 경우가 있고 필요 없는 경우가 있습니다.
함수(매개변수) 와 같은 방식으로 사용됩니다.
3. 클래스 멤버 변수(필드)
설명하기에 앞서 클래스 멤버 변수보다는 필드라는 표현이 더 정확한 표현입니다.
멤버 변수는 클래스 속성이라고도 불립니다.
로컬 변수가 메소드 { } 블록 내에서 선언하는 것이라면,
멤버 변수는 클래스 { } 블록 내에서 선언합니다.
4. 참조 변수
외부 클래스를 사용하기 위한 변수입니다.
외부 클래스에서 메소드를 호출하기 위해 사용하는 것으로 힙 메모리에 생성된 인스턴스를 가리키는 변수입니다.
참조변수.메소드(); 와 같은 방식으로 사용됩니다.
5. static 변수(정적 변수, 클래스 변수)
static 변수는 클래스 전반에서 공통으로 사용할 수 있는 기준 변수입니다.
static 변수는 클래스 내부에 선언하지만, 다른 멤버 변수처럼 인스턴스가 생성될 때마다 새로 생성되는 변수가 아니라,
메모리 공간에 한 번 할당되고 나면 그 값을 모든 인스턴스가 공유합니다.
객체마다 가지고 있어야 할 데이터가 아닌 공용 데이터라면 정적 필드로 선언하는 것이 좋습니다.
클래스 기반한 변수라고 해서 클래스 변수라고도 합니다.
클래스.static 변수명; 와 같은 방식으로 사용됩니다.
모든 변수의 예시입니다.
public class VariableTest {
// age (3. 필드)
int age;
// avgAge (5. static 변수)
static int avgAge = 80;
// int speed (2. 매개 변수)
void setAge(int speed) { }
} // VariableTest
public class VariableTest2 {
public static void main(String[] args) {
// vt1 (4. 참조 변수)
VariableTest vt1 = new VariableTest();
vt1.age = 10;
vt1.setAge(10);
System.out.println(VariableTest.avgAge);
// 80 (5. static 변수 사용)
// age1(1. 로컬 변수)
int age1;
} // main
} // VariableTest2
'백엔드 > JAVA' 카테고리의 다른 글
배열 (0) | 2021.08.21 |
---|---|
반복문(while문, for문) (0) | 2021.08.21 |
[JAVA] 조건문(if문과 switch-case문) (0) | 2021.03.09 |
[JAVA] 연산자 (0) | 2021.03.07 |
[JAVA] 자료형, 데이터 타입 (0) | 2021.03.07 |
최근댓글