본문 바로가기
프로그래밍 언어/Java 프로그래밍

Java Day6 - 메서드

by Hyeon_ 2021. 11. 8.

메서드

  • 함수 Vs. 메서드

    • 큰 차이는 없음
    • 객체지향 언어에서 클래스 내에서 선언되는 함수를 메서드라고 따로 구분하여 표현
    • 자바를 제외한 언어들은 클래스를 반드시 사용하지 않아도 되는 언어 존재(Python, C++ 등등)
    • 자바는 반드시 클래스 필요 >> 모두 메서드라고 표현
  • 알고있는 함수와 동일

    • 엄밀한 수학적 정의 함수를 그대로 따르지는 X
    • 수학적 정의의 개념을 그대로 차용해서 사용(함수)
    • 수학에서의 함수는 집합 x와 y에 대한 관계
      • f(x) = y (입력 x에 대한 출력 y)
    • 프로그래밍 언어에서는 프로그램을 이루는 기본 단위
      • 명령어들의 집합
      • 코드의 재사용성
  • 자바에서 메서드의 기본 형태

[반환 타입] [메서드 이름] (타입 변수명, 타입 변수명, ...){
    // 메서드 블록
}
  • 자바에서 main 메서드는 특별한 메서드
    • 누군가에 의해서 자동으로 실행
    • 자바에서의 몯느 코드는 main 메서드부터 실행 시작
    • 나머지 메서드들은 직접 실행을 시켜줘야 한다
      • 메서드 호출

메서드의 호출 구조

  1. 메서드는 언제 실행되는가?
    • 메서드는 호출과 함꼐 실행
    • 메서드의 실행은 메모리에 메서드를 위한 공간이 만들어 짐을 의미
    • 메서드는 실행되는 동안 메서드 고유의 메모리 영역을 가짐
    • 이것을 콜스택(호출스택) 이라 함
  2. 메서드는 언제 종료되는가?
    • 메서드 블록 내에 더 이상 실행할 코드가 없으면 자동으로 종료
    • return 명령을 수행하면 메서드 종료
    • 메서드의 종료는 메모리의 삭제를 의미
      • 메서드가 실행중에 사용했던 모든 메모리 반납
      • 종료 이후 해당 메모리에는 값이 더 이상 남아있지 않음(참조 불가를 의미)

자바의 변수의 종류

  • 클래스 변수
  • 인스턴스(객체) 변수
  • 지역변수(Local Variable)
    • 메서드 내에서 선언(정의)된 변수
    • 파라미터도 지역변수
    • 지역변수는 메서드의 범위를 넘어설 수 없음
    • 다른 메서드의 메모리를 참조하는 것도 불가능
    • 해당 메서드 내에서만 유효(변수의 영영(Scope))

타입에 따른 입력값 전달

  • 자바에서 변수의 종류는 두 가지
    • 기본형 변수(boolean, byte, char, short, int, float, double)
    • 참조형 변수(String, Array, ...)
  • Call by Value
  • Call by Reference

참조형 변수의 반환

  • 참조형 타입의 변수를 반환할 때도 마찬가지로 주소가 반환됨

재귀호출

  • recursive Call
  • 자기 자신을 호출하는 메서드
    • 재귀는 반복문을 이용하지 않는 반복의 또다른 형태
    • 메서드는 실행될 때마다 메모리가 생성