* 변수 선언위치에 따른 변수의 종류
- 변수의 선언위치가 변수의 종류와 범위(Scope)을 결정한다.
변수의 종류 |
선언위치 |
생성시기 |
클래스 변수 |
클래스 영역 |
클래스가 메모리에 올라갈 때 |
인스턴스 변수 |
클래스 영역 |
인스턴스를 생성시 |
지역변수 |
메서드 영역 |
변수 선언문 수행시 |
-> 인스턴스 변수
- 각 인스턴스의 개별적인 저장공간 인스턴스마다 다른 값 저장가능
- 인스턴스 생성 후,'참조변수.인스턴변수명'으로 접근
- 인스턴스를 생성할 때 생성되고, 참조변수가 없을 때 가비지 컬렉터에 의해 자동 제거
->클래스 변수
-같은 클래스의 모든 인스턴스들이 공유하는 변수(Static)
-인스턴스 생성없이 '클래스이름.클래스변수명' 으로 접근
-클래스가 로딩될 때 생성되고 프로그램이 종료될 때 소멸
-> 지역변수
- 메서드 내에 선언, 메서드 종료와 함께 소멸
- 조건문, 반복문의 블럭{} 내에 선언된 지역변수는 블럭을 벗어나면 소멸
* 메서드란?
- 작업을 수행하기 위한 명령문의 집합
- 어떤 값을 입력받아서 처리하고 그 결과를 돌려준다(돌려주지 않을 수도 있다. void)
-> 메서드의 정의 - 클래스 영역에만 정의 할 수 있다.
// 메서드 호출시 수행될 코드
int add(int a , int b){
int result = a+b;
return result; // 호출한 메서드로 결과를 반환한다.
// 반환값이 없는 경우는 리턴타입 대신 void 사용
-> return 문
- 메서서드의 블럭 {}의 끝에 도달했을때
- 메서서드을 블럭 {}을 수행 도중 return문을 만났을때
- 현재 실행 중인 메서드를 종료하고 호출한 메서드로 되톨아 간다.
1. 반환값이 없는 경우 - return문만 써주면 된다
return;
2. 반환값이 있는 경우 - return문 뒤에 반환값을 지정해 주어야 한다.
return 반환값;
-> 재귀호출(recursive call)
- 메서드 내에서 자기 자신을 반복적으로 호출하는 것
- 재귀호출은 반복문으로 바꿀 수 있다.
- 이해하기 쉽고 간결한 코드를 작성할 수 있다.
-> 클래스 메서드 와 인스턴스 매서드
▶ 인스턴스 메서드
- 인스턴스 생성후, '참조변수.메서드의이름()'으로 호출
- 인스턴스변수 나 인스턴스메서드와 관련된 작업을 하는 메서드
- 메서드 내에서 인스턴스변수 사용가능
▶ 클래스 메서드(static 매서드)
- 객체생성없이 '클래스이름.메서드이름()'으로 호출
- 인스턴스변수나 인스턴트메서드와 관련없는 작업을 하는 메서드
- 매서드 내에서 인스턴스 변수 사용불가(클래스 메서드(클래스 변수)는 클래스가 메모리에 먼저 올라 오기 때문)
* 메서드 오버로딩
- 하나의 클래스에 같은 이름의 메서드를 여러 개 정의하는 것
->오버로딩의 조건
- 메서드의 이름이 같고
- 매개변수의 개수 또는 타입 달라야 함
- 매개변수는 같고 리턴타입이 다른 경우는 오버로딩이 성립되지 않는다.
ex) void println()
// 다양하게 오버로딩된 메서를 제공함으로써 모든 변수를 출력할 수 있도록 설계
'JAVA' 카테고리의 다른 글
자바의 객체지향개념 2-1 (0) | 2015.10.05 |
---|---|
자바의 객체지향개념 1-3 (0) | 2015.10.05 |
자바의 객체지향개념 1-1 (0) | 2015.10.05 |
본문 한글깨짐 문제 해결방법 (0) | 2015.09.22 |
eclipse 단축키(Hot key) (0) | 2015.07.16 |