카테고리 없음

[패스트 캠퍼스 자바 완주반] 5-2. 함수와 메서드

닉네임이 멋이 중헌디 2021. 2. 27. 14:39

Chapter 05 클래스와 객체 - 02 함수와 메서드, 스택 메모리.pdf
1.08MB

1. 함수(function) 

1)함수

-하나의 기능을 구현하는 코드 (여러 개가 아닌 하나의 기능)

   ex. 더하기라는 하나의 기능을 하는 함수를 각 경우에 맞게 호출한다

- 반환값 : 함수를 사용한 뒤 나온 결과를 돌려준다(보여준다) 

- 호출: 함수를 불러서 사용한다

- 장점: 기능 분리 그러므로 가독성 올라간다. 반복해서 사용하기 좋다. 디버깅, 업데이트할 때 편리

-형태 : 들어가는 값(매개변수) - 함수(이름) -  나오는 값(반환값)

cf. 경우에 따라 매개변수, 반환값이 없을 수 있다

 

2)정의하기

-데이터 타입이 있으면 반환값의 종류를 정해준다

-void : 반환값이 없으면 데이터 타입을 선언하는 자리에 void 사용

데이터 타입 이름( 매개변수 ){

 함수 몸체  int result;

 반환 return result

}

 

ex. int add(n1, n2){

 int result;

 result = n1 + n2;

 return result

}

 

 

ex.

 public static int addNum(int num1, int num2){

 int result;

 result = num1 + num2;

 return result;

}

 

ex. 반환값이 없는 함수

public static void sayHello(String greeting){

 System.out.println(greeting);

}

 

ex. 매개변수가 없는 함수

publice static int calcSum(){

  int sum;

  int i;

  for (i= 0; i<=100; i++){

    sum + = i;

}

 return sum;

}

 

함수 내에 다른 함수를 부를 수도 있다.

반환값이 없는 함수는 다른 변수로 받을 수 없다. (값이 없는 거니까)

 

 

2. 메서드

-객체 기능 구현하기 위해 클래스 내부에 구현되는 함수 
-메서드의 이름은 사용하는 쪽(클라이언트 코드)에 맞게 명명하는 것이 좋dma
ex. public String getStudentName(){
   return studentName;
}

 

cf. 제공하는 쪽 : 서버 코드

  => 서버 코드면 주는 거니까 giveStudentName이었겠지 

cf. 클래스는 대문자,

 변수와 메서드는 소문자 시작, camel notation으로 띄어쓰기 대신 대문자 


3.스택 메모리 
함수 호출할 때 사용하는 메모리 
stack구조이므로 들어갈 때 가장 마지막에 들어간 메모리가 먼저 꺼내진다 
함수 호출이 되는 순으로 stack 메모리 밑에 깔리고 차례로 쌓인다. 

cf. 물리적으로 위에 올라가는 것이 아니라 이전 함수가 더 depth가 깊어진다는 의미. 
 
함수 기능 수행이 끝나면 위에서부터 반환되고 각 함수의 지역변수는 기능을 다 한 채로 반환된다. (사라진다)

 

ex. public static void main(String[] args){
 int n1 = 10; 
 int n2 = 20; 

 int total = addNum(n1, n2); 
}  

=> main함수 안  지역변수 Srting, n1,n2 (지역 변수: 함수 내부에서만 사용되는) 이 스택 메모리 바닥에 깔린다
=> addNum이 호출이 되면서 main 위에 올라간다
 addNum의 지역변수 (num1, num2, result) 

=>  addNum의 수행이 끝나면 main 함수가 남고 addNum의 메모리가 없어진다 

 

cf. 변수의 이름은 달라도 같아도 상관이 없다. 
cf. 클래스 안 멤버 변수들은 함수 안 지역변수와 다르기 때문에 생성과 반환 시기가 다르다.