멤버변수와 지역변수
멤버변수(클래스안에서 선언된 변수):
멤버변수는 해당 클래스안의 모든 메서드에서 사용 가능하고 전역변수(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으로 자동 초기화 되어있다.
'학원 > JAVA' 카테고리의 다른 글
9.27 10-3 static 블락 (0) | 2022.09.27 |
---|---|
9.27 10-2 정적멤버변수 vs 인스턴스형멤버변수 (0) | 2022.09.27 |
9.26 9-4일 차 [접근 지정자] (1) | 2022.09.26 |
9.26 9-3일 차 추상화 최종 Grade (0) | 2022.09.26 |
9.26 9-2일 차 계좌 입/출금 & 통장정리 (0) | 2022.09.26 |