변수와 메소드
변수의 종류
- 클래스 변수
- 클래스가 메모리에 올라갔을 때 생성
- 모든 인스턴스가 공통된 저장공간(변수)를 공유
- 인스턴스 변수 앞에 static을 붙이면 OK ⇒ static int width = 100;
- 인스턴스 변수
- 인스턴스 생성 시 생성
- 인스턴스마다 다른 값을 가지는 경우
- 지역 변수
- 클래스 이외의 영역 (메소드, 생성자)
- 변수 선언문 수행 시 생성
메소드 선언과 구현
반환타입 이름(파라미터) {
... //메소드 구현부
return -1 // 반환 값은 최대 1개
}
int add(int x, int y) {
int result = x + y;
return result;
}
반환 값이 없는 경우?
- 반환 타입으로 void를 주면 된다.
JVM의 메모리 구조
JVM은 프로그램 수행에 필요한 메모리를 할당받고, 할당 받은 메모리를 용도에 따라 여러 영역으로 나누어 관리한다.
- 메소드 영역: 클래스에 대한 정보 (클래스 변수는 이 영역에 생성된다)
- 호출 스택(call stack): 메소드 작업 수행 시간 동안 지역변수와 연산의 중간 결과 등을 저장
- 힙: 인스턴스 생성
기본형 변수와 참조형 변수
- 기본형: 값 자체를 복사하는 것
- 참조형: 값이 담긴 주소를 갖고 있어 값의 변경이 가능
클래스 메소드와 인스턴스 메소드의 차이
- 클래스 메소드 (static)
- 인스턴스 변수를 사용하지 않는(관계 없는) 경우 일반적으로 클래스 메소드로 선언한다.
- 클래스 메소드는 인스턴스 변수를 사용할 수 없다.
- 인스턴스는 클래스를 생성해야 사용할 수 있다는 점으로 미루어 볼때, 클래스 메소드 내부에서 인스턴스 변수나 메소드는 사용할 수 없다는 것을 알 수 있다.
- 인스턴스 메소드
- 인스턴스 변수를 사용하는 경우 인스턴스 메소드로 선언한다.
class Data {
int x;
static int y;
static void method() {
System.out.println(x); // 에러: 클래스 메소드에서 인스턴스 변수를 사용함
System.out.println(y); // OK
}
}
'Study > Java' 카테고리의 다른 글
[Java] 변수의 초기화 (0) | 2020.03.10 |
---|---|
[Java] 생성자와 this (0) | 2020.03.10 |
[Java] 오버로딩 (0) | 2020.03.10 |
[Java] 클래스와 객체 (0) | 2020.03.10 |