● 변수의 종류
1. 지역변수(local variable)
- 클래스 중괄호 영역은 포함되지 않으며, 메소드 또는 그 안의 영역에서 선언된 변수
2. 매개변수(parameter)
- 메소드의 소괄호 안에서 선언되는 변수, 해당 메소드 안에서만 사용 가능
3. 전역변수(global variable)
- 클래스 중괄호 영역에서 선언된 변수, 클래스 내 전 지역에서 사용 가능
4. 정적변수(static variable, class variable)
- 객체 간 공유, 편의성
● 저장기억부류(Storage class)

실습(변수)
1. 전역 변수
※ 변수 및 메소드 생성
public class Variable1 {
int data = 10;
void increaseData() {
System.out.println(++data);
}
}
- 생성자로 초기화 O
public class Variable2 {
public static void main(String[] args) {
Variable1 v1 = new Variable1();
v1.increaseData();
v1.increaseData();
v1.increaseData();
v1.increaseData();
v1.increaseData();
v1 = new Variable1(); // 전역변수는 new를 만나면 초기화된다.
v1.increaseData();
v1.increaseData();
v1.increaseData();
v1.increaseData();
v1.increaseData();
}
}

- 데이터 공유 X
public class Variable2 {
public static void main(String[] args) {
Variable1 v1 = new Variable1();
Variable1 v2 = new Variable1();
v1.data = 10;
v2.data = 30;
System.out.println(v1.data);
System.out.println(v2.data); // 전역변수는 데이터를 공유하지 않는다.
}
}

2. 정적 변수
※ 변수 및 메소드 생성
public class Variable1 {
static int data_s = 10;
// static 필드에서는 static 변수만 사용 가능
static void increaseData_s() {
System.out.println(++data_s);
}
}
- 생성자로 초기화 X
public class Variable2 {
public static void main(String[] args) {
Variable1 v1 = new Variable1();
v1.increaseData_s();
v1.increaseData_s();
v1.increaseData_s();
v1.increaseData_s();
v1.increaseData_s();
v1 = new Variable1(); // 정적변수는 생성자로 초기화되지 않는다.
v1.increaseData_s();
v1.increaseData_s();
v1.increaseData_s();
v1.increaseData_s();
v1.increaseData_s();
}
}

- 데이터 공유 O
public class Variable2 {
public static void main(String[] args) {
Variable1 v1 = new Variable1();
Variable1 v2 = new Variable1();
Variable1.data_s = 10;
Variable1.data_s = 30;
System.out.println(Variable1.data_s);
}
}

※ 사용법 및 편의성
public class Variable2 {
public static void main(String[] args) {
// 정적변수 사용 방법 : 클래스명.메소드명()
Variable1.increaseData_s();
// 편의성
System.out.println(Math.ceil(10.1));
}
}

'ETC > 복습' 카테고리의 다른 글
[복습_JAVA] 24 (0) | 2022.09.08 |
---|---|
[복습_JAVA] 23 (0) | 2022.09.07 |
[복습_JAVA] 21 (0) | 2022.09.02 |
[복습_JAVA] 20 (0) | 2022.09.01 |
[복습_JAVA] 19 (0) | 2022.08.30 |