* 변수 선언위치에 따른 변수의 종류

- 변수의 선언위치가 변수의 종류와 범위(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
Posted by 달콤한부자
,