1-1. 변수의 종류 - 인스턴스 변수, 클래스 변수, 지역변수
변수는 클래스 변수, 인스턴스 변수, 지역변수 모두 세 종류가 있다.
클래스 영역이 아닌 곳에서 선언된 변수는 지역변수
멤버 변수 중 static 이 붙은 변수는 클래스 변수 , 붙지 않은 변수는 인스턴스 변수이다.
인스턴스 변수는 인스턴스가 생성될 때 만들어진다.
인스턴스마다 별도의 저장공간을 가지므로 서로 다른 값을 가질 수 있다.
클래스 변수는 클래스가 메모리에 올라갈 때 생성된다.
static를 붙이면 만들어지고 모든 인스턴스가 공통된 저장공간(변수)를 공유하게 된다.
인스턴스를 생성하지 않고 언제라도 바로 사용할 수 있다.
1-2. 메서드
메서드는 선언부와 구현부로 나뉜다.
선언부는 '메서드의 이름', '매개변수 선언', '반환타입'으로 구성되어있다.
메서드를 호출할 때 괄호 안에 지정해준 값들을 인수(argument) 또는 인자 라고 한다.
인수는 메서드가 호출되면 매개변수에 대입된다.
1) 호출 스택
- 메서드가 호출되면 필요한 만큼의 메모리를 스택에 할당받는다.
- 메서드가 수행을 마치고나면 메모리를 반환하고 스택에서 제거된다.
- 호출 스택에 제일 위에 있는 메서드가 현재 실행 중인 메서드이다.
- 아래에 있는 메서드가 바로 위의 메서드르 호출한 메서드이다.
기본형 매개변수는 변수의 값을 읽기만 할 수 있지만
참조형 매개변수는 변수의 값을 읽고 변경할 수 있다. (주소를 전달받기 때문에)
2) static 메서드 (클래스 메서드)
객체를 생성하지 않아도 메서드를 호출할 수 있다. (ex . println)
<클래스 변수만 이용 가능>
클래스 메서드(static method) : 메서드의 리턴 타입 앞에 static이 붙어 있다.
인스턴스 메서드 : 붙어 있지 않다.
인스턴스 메서드 역시 인스턴스를 생성해야만 호출할 수 있다.
static 메서드는 인스턴스 메서드를 호출할 수 없고 인스턴스 변수를 사용할 수 없다.
static메서드는 객체를 만들기 전에도 호출이 가능한데 인스턴스 메서드와 변수는 인스턴스가 생성되어야만 사용할 수 있기 때문이다.
+ ) static 블럭 ;
객체가 여러 개 호출되는 경우
첫 객체를 만들 때 딱 한번만 호출되는 코드블럭!! (생성자 코드 실행 전)
static 블럭 내부에서는 static한 것들만 호출할 수 있다.
'프로그래밍 > JAVA' 카테고리의 다른 글
[JAVA의 정석]Ch7_다형성과 추상클래스 (0) | 2022.07.11 |
---|---|
[JAVA의 정석]Ch7_객체지향_생성자와 상속 (0) | 2022.07.07 |
[JAVA의 정석]6_객체지향개념_클래스와 인스턴스 (0) | 2022.04.27 |
JAVA - 메소드 오버라이딩[overriding]과 오버로딩 (0) | 2021.08.30 |
Java - 상속[extends] (0) | 2021.08.29 |