프로그래밍/JAVA

[JAVA의 정석]Ch6_객체지향_변수와 메서드(+static 블록)

개발자 덕구🐾 2022. 7. 6. 18:03
728x90

 

1-1. 변수의 종류 - 인스턴스 변수,  클래스 변수, 지역변수 

 

변수는 클래스 변수, 인스턴스 변수, 지역변수 모두 세 종류가 있다. 

클래스 영역이 아닌 곳에서 선언된 변수는 지역변수

멤버 변수 중 static 이 붙은 변수는 클래스 변수 , 붙지 않은 변수는 인스턴스 변수이다. 

 

 

 

인스턴스 변수는 인스턴스가 생성될 때 만들어진다. 

인스턴스마다 별도의 저장공간을 가지므로 서로 다른 값을 가질 수 있다. 

 

 

클래스 변수는 클래스가 메모리에 올라갈 때 생성된다.

static를 붙이면 만들어지고 모든 인스턴스가 공통된 저장공간(변수)를 공유하게 된다.

인스턴스를 생성하지 않고 언제라도 바로 사용할 수 있다.

 

 

 

 


 

 

 

 

1-2. 메서드 

 

메서드는 선언부와 구현부로 나뉜다.

선언부는 '메서드의 이름', '매개변수 선언', '반환타입'으로 구성되어있다. 

 

메서드를 호출할 때 괄호 안에 지정해준 값들을 인수(argument) 또는 인자 라고 한다. 

인수는 메서드가 호출되면 매개변수에 대입된다.

 

 

 

1) 호출 스택

 

-  메서드가 호출되면 필요한 만큼의 메모리를 스택에 할당받는다.

-  메서드가 수행을 마치고나면 메모리를 반환하고 스택에서 제거된다.

- 호출 스택에 제일 위에 있는 메서드가 현재 실행 중인 메서드이다.

- 아래에 있는 메서드가 바로 위의 메서드르 호출한 메서드이다. 

 

 

기본형 매개변수는 변수의 값을 읽기만 할 수 있지만 

참조형 매개변수는 변수의 값을 읽고 변경할 수 있다. (주소를 전달받기 때문에)

 

 

2) static 메서드 (클래스 메서드)

 

객체를 생성하지 않아도 메서드를 호출할 수  있다. (ex . println)

 <클래스 변수만 이용 가능>

 

클래스 메서드(static method) : 메서드의 리턴 타입 앞에 static이 붙어 있다.

인스턴스 메서드 : 붙어 있지 않다.

 

 

인스턴스 메서드 역시 인스턴스를 생성해야만 호출할 수 있다. 

 

 

static 메서드는 인스턴스 메서드를 호출할 수 없고 인스턴스 변수를 사용할 수 없다.

static메서드는 객체를 만들기 전에도 호출이 가능한데 인스턴스 메서드와 변수는 인스턴스가 생성되어야만 사용할 수 있기 때문이다. 

 

 

 

+ ) static 블럭  ;

객체가 여러 개 호출되는 경우 

첫 객체를 만들 때 딱 한번만 호출되는 코드블럭!! (생성자 코드 실행 전)

static 블럭 내부에서는 static한 것들만 호출할 수 있다. 

 

 

 

 

반응형