지역 변수(stack 영역)
- 지역 안에서 선언된 변수
- 그 영역의 닫는 중괄호를 만났을 때 메모리에서 해제됨
- 사용자가 직접 초기화 해야 함
- 다른 영역에서 접근할 수 없기 때문에 보안성이 뛰어남
public class Main {
public static void main(String[] args) {
int a = 0; //지역변수.
}
}
전역 변수(data 영역)
- 클래스 영역 안에 있고, 전체 영역에서 사용 가능한 변수
- 클래스 영역 외의 어떠한 영역에도 포함되어 있지 않음
- new를 만났을 때 초기화 됨
- 프로그램 종료 시 메모리에서 해제 됨
- 다른 영역에서도 접근할 수 있기 때문에, 보안성이 상대적으로 낮음
- 전역 변수 종료
- static 변수 : 다른 클래스에서도 호출 가능
- 인스턴스 변수 : 같은 클래스 내에서 호출 가능
- 전역 변수 종료
public class Main {
int a = 0; //전역변수 - 인스턴스 변수
static int width = 100; //전역변수 - static 변수
public static void main(String[] args) {
}
}
인스턴스 메서드
- 인스턴스 객체를 생성 후 “인스턴스변수.메서드()” 형태로 호출하는 방식
- 인스턴스 멤버와 관련된 작업을 하는 메서드
- 메서드 내에서 인스턴스 변수를 사용할 수 있음
class Math1 {
//인스턴스 변수
int a,b;
// 인스턴스 메서드
int add(){
return a + b;
}
}
class Main {
public static void main(String args[]) {
//인스턴스 생성
Math1 mt1 = new Math1();
mt1.a = 200;
mt1.b = 100;
//인스턴스 메서드 호출
System.out.println(mt1.add());
}
}
static 변수, 클래스 변수(data 영역)
- 컴파일을 하게 되면 가장 먼저 메모리에 올라가고, 어떠한 경우에도 초기화가 되지 않음
- 단, 프로그램 종료 시 메모리에서 해제 됨
- 메모리에 고정되기 때문에 남용 시 메모리 혹은 프로그램 실행 속도에 악영향을 줌
정적(Static)
- 변하지 않는 것
정적 멤버(클래스 멤버)
- 정적 변수(정적 필드) + 정적 메소드
정적 변수
- 메모리에 고정적으로 할당되어, 프로그램이 종료될 때 해제되는 변수
정적 메서드
- 객체 생성 없이 “클래스.메서드()” 형태로 호출하는 방식
- 인스턴스 멤버와 관련 없는 작업을 하는 메서드
- 메서드 내에서 인스턴스 변수를 사용할 수 없음
class Math1 {
//static 메서드
static int add(int a, int b){
return a + b;
}
}
class Main {
public static void main(String args[]) {
//static 메서드(클래스 메서드) 호출 => 객체 생성 없이 호출 가능
System.out.println(Math1.add(200,100);
}
}
'Programming Language > JAVA' 카테고리의 다른 글
[JAVA] List & Set &Map (0) | 2023.08.15 |
---|---|
[JAVA] Call By Value와 Call By Reference (0) | 2023.08.15 |
[JAVA] 인터페이스(interface) (0) | 2023.08.12 |
[JAVA] 가비지 컬렉션(Garbage Collection) (0) | 2023.08.01 |
[JAVA] JVM (0) | 2023.08.01 |