티스토리 뷰

java 에는 크게 3개의 변수로 분류한다.

 

-클래스변수

 

-인스턴스변수

 

-지역변수

 

3가지의 변수는 각각의 선언된 위치에 따라서 분류 가 된다.

각가의 특징과 장단점을 알아보자.

 

 

class variable{

   int a ;                        //클래스 안에서 static 없이 선언,  인스턴스변수

   static int b ;                //클래스 안에서 static 을 붙이고 선언. 클래스변수

 

   void test(){

   int c ;        //메소드 안에서 선언, 지역변수 (메소드안에서만 사용가능하고 메소드를벗어나서 호출하면  안됨)

   }

}

 

클래스 변수는 클래스 안에 어디서든 생성자를 만들지않고도 호출이가능하다.

 

 

----------------------------------------------------------------------------------------------------------------------------

-클래스 변수와 지역변수의 차이 예제-

public class variable{

  static  int  width = 2000;

  static  int  height = 1000;  

  public static void main(String[] args){  // 메인메서드 (실행메서드)

   System.out.println(width);    // = 2000

   System.out.println(height);   // = 1000

   

  System.out.println(a);  //test 메소드에서 생성한 지역변수는 test 메소드 { } 중괄호  외부에서는 사용할수없다!

  }

  void test() {        //  클래스 안에서 생성한  메서드

     int x =50

     int y =100;

 

    System.out.println(a); // = 50  test 메서드{ } 중괄호 안에서만 사용가능

 

  }

}

 

---------------------------------------------------------------------------------------------------------------------------------

-클래스변수와 인스턴스변수 의 차이 예제- 

클래스 변수와 인스턴스변수 모두 클래스 내에서 생성된 변수로 멤버변수 라고도 한다.

 

public class variable {

  public static void main(String[] args){

   System.out.println(Test.b);     // = 99 외부 클래스지만 멤버변수에 접근가능

 

   //main 메서드에서 클래스 Test 생성자 후 접근

 

 Test T = new Test();  //인스턴스화 한다고 한다.

 

 T.a = 100;  // 100으로 값할당

 System.out.println(T.a);   // = 100 

 System.out.printLn(b) = 99;

 

 T.a = 200; //100 에서 200으로 값변경

 System.out.println(T.a); // = 200;

 System.out.printLn(b) = 99;

  }

}

 

 class Test{

   int a ; 

   static int b = 99; 멤버변수,

  }

 

자주 값을 변경할것같으면 인스턴스변수로 구분지어 사용.

자주 값이 바뀌지않고  동일한 값을 가지게 할 생각이면  클래스변수로 (static) 으로 구분지어

사용.

 

클래스변수도 물론 값을 자주 바꿔도 되지만 그렇게되면 인스턴스변수로 구분지어 사용하는

의미가 없을것같단 생각이든다 .