본문 바로가기

ETC/복습

[복습_JAVA] 22

● 변수의 종류

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