java의 변수의 종류는 모두 세 종류가 있다. 

 

1. 클래스 변수

- 인스턴스 변수 앞에 static을 붙인다. 

- 모든 인스턴스가 해당 변수를 공유하게 된다. 

- 공유 변수라고도 한다. 

- 공통적인 값을 유지해야하는 속성의 경우 클래스 변수로 선언한다. 

- 인스턴스를 생성하지 않고도 언제든지 바로 사용할 수 있다. 

 

2. 인스턴스변수

- 클래스 영역에 선언된다. 

- 클래스의 인스턴스가 생성될 때 만들어진다. 

- 인스턴스는 독립적인 저장공간을 가진다. ( 인스턴스끼리 각자의 값을 가진다는 것 ) 

 

3. 지역변수 

- method내에 선언되고 사용 가능하다. 

- {}을 벗어나면 소멸되어 사용할 수 없다. 

 

 

변수의 종류를 결정하는 것은 선언된 위치이다. 


class Car{
	
	// 인스턴스 변수 
	static String name;
    
	// 클래스 변수 
	// static이 붙었다. 
	static int carCnt; 
    
	void method(){
    
    	// 지역변수
    	int speedLimit = 0; 
        
    }
    
	
}

 

 

간단한 예제 

Car.java 


public class Car{
	
	// 인스턴스 변수 
	String name;
	boolean power = false ; 
    
	// 클래스 변수 
	// static이 붙었다. 
	static int carCnt; 
    
	public Car(String name) {
		
		// 클래스 변수 접근 방법 클래스명.변수명 
		Car.carCnt++ ;
		
		// 인스턴스 변수 접근 
		this.name = name; 
		
		System.out.println("자동차가 생성되었습니다. 현재 생산량 : " + Car.carCnt + "대");
		
	}
	
	void power() {
		 
		 power = !power ; 
		 
		 if( power ) {
			 System.out.println(this.name + " 자동차 시동을 켭니다.");
		 } else {
			 System.out.println(this.name + " 자동차 시동을 끕니다.");
		 }
		 
	 }
	
	
	public static void main(String[] args) {
		
		Car car1 = new Car("벤츠"); 
		Car car2 = new Car("BMW");
		Car car3 = new Car("포르쉐");
		
		System.out.println("----------------------------------------------------");
		
		car1.power();
		car2.power();
		car3.power();
		
	}
    
	
}

 

결과) 

자동차가 생성되었습니다. 현재 생산량 : 1
자동차가 생성되었습니다. 현재 생산량 : 2
자동차가 생성되었습니다. 현재 생산량 : 3
----------------------------------------------------
벤츠 자동차 시동을 켭니다.
BMW 자동차 시동을 켭니다.
포르쉐 자동차 시동을 켭니다.

 

 

carCnt는 클래스 변수이다. 

Car의 생성자가 실행될 때마다 carCnt는 1식 값이 증가한다. 

carCnt는 클래스 변수이기 때문에 각각의 인스턴스와 공유된다. 

그렇기 때문에 생산량을 출력할 때 1씩 증가된 값을 볼수 있다. 

 

 

car1, car2, car3의 인스턴스 변수는 서로 다른 값을 가진다. 

String name이 인스턴스 변수인데 

생성자로 넘긴 각자의 이름을 가지고 있다. 

그래서 car1.power() 콜했을 때 

"각각의 이름"과 자동차 시동을 켭니다. 라는 메시지가 출력된다. 

 

 

블로그 이미지

나무뚱이

,