프로그래밍 언어/자바
필드와 지역변수
dks_a
2022. 5. 8. 18:40
package pk20;
//지역변수는 스택에
//필드는 힙에
//첫째 클래스
class A{ // 클래스 멤버들은 모두 힙영역에 저장됨
// 필드 : 클래스내부 & 메소드 외부에 위치하는 변수, 힙영역(값)에 저장
int f1 = 10;
int f2; //힙은 자동으로 초기화 시켜줌(false, 0, 0.0, null)
/*
* ① boolean 타입 배열 항목의 기본 초기값은 false이다.
* ② 정수 타입 배열 항목의 기본 초기값은 0이다.
* ③ 실수 타입 배열 항목의 기본 초기값은 0.0f 또는 0.0이다.
* ④ 참조 타입 배열 항목의 기본 초기값은 null이다.
* */
// 메소드 : 힙영역(주소) & 메소드영역(정의)
void print1() {
int lv1 = 20; // 메소드내 변수는 지역변수, 스택영역(값), 이클립스에서 색상으로 필드와 구분됨
// int lv2;
System.out.println("lv1 = " + lv1);
// System.out.println("lv2 = " + lv2); // 에러, 스택영역 지역변수는 초기화 필수
print2(30); // 메소드간 호출 가능
}
void print2(int lv3) {
int lv4 = lv3 * 2;
System.out.println("lv4 = " + lv4);
System.out.println();
}
}
//둘째 클래스
public class 필드와지역변수 {
public static void main(String[] args) {
A a = new A();
//필드
System.out.println("a.f1 = "+ a.f1); //10
System.out.println("a.f2 = "+ a.f2); //0, 필드는 자동 초기화됨
//메소드
a.print1(); //lv1 = 20
/*void print1() {} 안에 print2(30);
lv1 = 20
lv4 = 60 */
// a.print2(30); // lv4 = 60
}
}