Blog

[Java] 객체지향개념 2

요약 : 변수, 메서드

변수의 종류

인스턴스변수

  • 인스턴스변수는 해당클래스의 인스턴스의 개별적인 공간에 존재하며, 인스턴스마다 다른 값을 저장가능하다.
  • 인스턴스 생성 후 참조변수.인스턴스변수명 으로 접근이 가능하다.
  • 인스턴스 생성 시 생성되며, 참조하는 변수가 없을 때 가비지컬렉터에 의해 자동 제거된다.

클래스변수

  • 같은 클래스의 모든 인스턴스들이 공유하는 변수.
  • 인스턴스 생성 없이 클래스이름.클래스변수명으로 접근 가능.
  • 클래스가 로딩될 때 생성되가 프로그램 종료시 소멸

지역변수 ( 클래스, 인스턴스변수를 제외한 모든변수 *static 붙일 수 없음 )

  • 메서드 내부에 선언되며, 메서드의 종료와 함께 소멸된다.
  • 조건문, 반복문의 블럭{} 내에 선언된 지역변수는 블럭을 벗어나면 소멸

 

메서드

  • 클래스 영역에만 정의할 수 있다.
  • 리턴값이 없을경우 데이터 타입을  void로 한다.
  • 메서드는 {}의 끝에 도달하거나 return문을 만났을 때 종료된다.
  • 하나의 메서드는 하나의 기능만 하는게 좋음, 물론 경우에 따라 다르겠지만

( * 조건에따라 반환값이 있는경우 조건문과 상관없이 값은 무조건 반환되어야한다. )

인스턴스메서드

  • 인스턴스 생성 후 참조변수.메서드이름 으로 호출가능
  • 메서드 내에서 인스턴스변수 사용가능

클래스메서드 ( static )

  • 객체생성없이 클래스명.메서드이름 으로 호출가능.
  • 인스턴스 변수, 인스턴스 메서드와 관련없는 작업을 하는 메서드
  • 메서드 내에서 인스턴스 변수, 메서드 호출불가
  • 메서드 내에서 인스턴스변수를 사용하지 않는다면 static을 붙이는게 좋음?

 

JVM 메모리 구조

메서드영역

  • 클래스 정보와 클래스 변수가 저장되는 곳

호출스택 ( call stack )

  • 메서드의 작업공간.
  • 메서드 호출되면 수행에 메서드는 필요한 메모리 공간을 할당받고  메서드가 종료되면 사용하던 메모리를 반환한다.

호출스택의 특징

  • 메서드가 호출되면 필요한 메모리를 스택에 할당받는다.
  • 메서드가 종료되면 사용했던 메모리를 반환한다.
  • 호출스택은 스택이라는 자료구조로 되어있는데 스택은 가장 마지막에 넣은 데이터가 가장 먼저 나온다는 자료구조이다.

힙 ( heap )

  • 인스턴스가 생성되는 공간.
  • new 연산자에 의해 생성되는 배열과 객체는 모두 여기에 생성

 

재귀호출

  • 반복문으로 바꿀 수 있으며 반복문보다는 성능이 좋지않다.

 

메서드 오버로딩

  • 메서드의 이름이 같아야한다.
  • 매개변수의 개수 또는 타입이 달라야 한다.
  • 매개변수는 같고 리턴타입이 다른경우는 오버로딩이 성립되지 않는다.

( * 매개변수가 타입만다르고 갯수같을경우 어떤메서드가 호출됬는지 판별하기위해 메서드의 매개변수에 데이터타입을 확실히 구분시켜준다. 아니면 컴파일 에러가발생한다.  ex) add( 3, 5L ) -> add ( int a, long b ) 호출 )