728x90
반응형

변수의 종류

 선언 위치에 따른 변수의 종류 : 변수의 선언 위치가 변수의 종류와 범위를 결정한다.


 ▶인스턴스 변수

   - 각 객체의개별적인 저장 공간, 객체마다 다른 값 저장 가능

   - 객체(인스턴스) 생성 후, '참조변수.인스턴스변수명'으로 접근

   - 객체를 생성할 때 생성되고, 참조변수가 없을 때 가비지컬렉터에 의해 자동으로 제거된다.


▶클래스 변수

   - 같은 클래스의 모든 인스턴스들이 공유하는 변수

   - 인스턴스 생성없이 '클래스이름.클래스변수명'으로 접근

   - 클래스가 로딩될 때 생성되고 프로그램이 종료될 때 소멸


▶지역 변수

   - 메서드(함수) 내에 선언되며, 메서드의 종료와 함께 소멸

   - 조건문, 반복문의 블럭 { } 내에 선언된 지역변수는 블럭을 벗어나면 소멸

 


클래스 변수와 인스턴스 변수

 인스턴스 변수 :: 객체가 생성될 때마다 생성되므로 객체마다 각각 다른 값을 가진다.

 클래스 변수 :: 모든 객체가 하나의 저장공간을 공유하므로 항상 공통된 값을 가진다.


인스턴스 변수(필드)의 선언

 public  int  speed;

public -> 접근지정자; private이나 public

int -> 필드의 타입

speed -> 필드의 이름


접근지정자(접근제어자) :: 어떤 클래스가 변수에 접근할 수 있는지를 표시한다.

public :: 모든 클래스로부터 접근이 가능하다.

private :: 클래스 내부에서만 접근이 가능하다.


<인스턴스 변수의 사용범위>

 인스턴스 변수는 선언 위치에 상관없이 클래스안의 어디서나 사용이 가능하다.




<클래스 변수와 인스턴스 변수>




지역 변수

 메서드(함수) 안에 선언하는 변수

public class Box {

  int width=0,length=0,height=0;  //인스턴스 변수(클래스에서 사용가능)

 

  public int getVol()

  {

      int vloume;    //지열 변수(getVol()안에서만 사용가능)

      volume=width*length*height;

      return volume;

   }


  volume=500;   //오류발생

}


지역 변수 사용시 주의점

 지역변수를 초기화하지 않고 사용하면 컴파일 오류 발생한다.

 오류 메세지: The local variable sum may not have been initialized

public class Bug {

   public int getSum()

   {

        int sum;

        for(int i=0; i<10; i++)

             sum=sum+i;  //오류발생

        return sum;  //오류발생

   }

}

728x90
반응형

+ Recent posts