멤버변수와 지역변수

멤버변수(클래스안에서 선언된 변수):

멤버변수는 해당 클래스안의 모든 메서드에서 사용 가능하고 전역변수(Global variable)와 같다.
멤버변수는 초기화를 하지 않고 사용해도 해당 자료형의 기본값으로 초기화 된다.
          예] int:0,double:0.0 참조형:null, boolean:false, char:''등

지역변수(Local Variable):

특정 지역 안에서 선언되어 그 지역에서만 사용되는 변수 그 지역을 벗어나면 그 변수는 메모리에서 사라진다. 메소드 안에서 선언된 변수 혹은 Block(if문,while문,for문,try문등) { } 안에서 선언된 변수를 지역변수라 한다. 또한 매개변수도 지역변수이다.
지역변수는 선언된 곳을 벗어나면 메모리가 해제된다.
지역변수는 사용시 반드시 초기화를 하고 사용해야 한다
즉 지역변수는 자동으로 초기화가 안된다.

※지역변수앞에는 modifier중
(final/abstract/static)
   final만 붙일 수 있다. (ex. 지역상수!!)
  abstract는 클래스와 메소드앞에만 붙일 수 있다.   (=>이건 추상클래스, 추상메소드라는 거)
  static는 못붙임.
  또한 지역변수 앞에는 접근지정자를 붙일수 없다.

 

 


class 안

public class GlobalNLocalVar 

[멤버변수]
private int mNoinit;
int mInit = 100;  선언과 동시에 초기화 100으로
클래스안에는 정의나 선언은 가능 but 명령은 불가  

mIntr = 100; 은 안돼

int [ ] mArray = new int [3];     선언 동시메모리할당 주소 초기화

[멤버메소드]
int getTotal(int start, int end) {
                 int sum;       지역변수는 자동으로 초기와 안됨
                  sum=0;
             System.out.println(sum);
                        for(int i =start; i<= end ; i++) {
                                  sum += i;
                                }

   *지역변수 i는 for문 안에서만 사용가능
     지역변수 sum,start,end는 getTotal메소드 안에서는 어디든 사용가능.


            if(sum % 2 ==0) {
                            String strResult;
                            System.out.println(strResult);    => 초기화 안됨
                              strResult = "총합은 짝수";    초기화 함
                             System.out.println(strResult);
                                                             }
                     else { strResult = "총합은 홀수";  안됨 if문 안에서만 가능
                               String strResult="총합은 홀수";
                               System.out.println(strResult);
                                   }
                       System.out.println("멤버변수(mNoinit):"+mNoinit);
                         return sum ;
                }/////getTotal


main 안
public static void main(String[ ] args) {


          GlobalNLocalvar gnv =new GlobalNLocalvar();   => gnv라는 이름의 GlobalNLocalvar 타입 메모리생성(인스턴스화/객체화)
         System.out.println("멤버변수(mNoinit):"+gnv.mNoinit);
         System.out.println("멤버변수(mInit):"+gnv.mInit);
         System.out.println("멤버변수(mArray):"+gnv.mArray); 
          int total = gnv.getTotal(1,10);
         public int start; 접근 지정자는 지역변수에 못붙는다.
          int start,end;  변수 선언만하고
          total = gnv.getTotal(start, end); 초기화 안됨
          배열은 어디서 선언되든 상관없이 초기화됨

         System.out.println("[클래스의 멤버인 배열]");
           for(int i=0; i<gnv.mArray.length;i++)
                System.out.printf("%d번방:%d%n",i,gnv.mArray[i]);   => 0으로 초기화가 자동 되어있음

         System.out.println("[지역에서 선언한 배열]");
               int [ ] lArray = new int [3];     =>로컬배열
                     for(int i=0;i<lArray.length;i++)
                     System.out.printf("%d번방:%d%n",i,lArray[i]);        ==> 요거도 0으로 자동 초기화 되어있다.

+ Recent posts