728x90
함수 생성 방식
함수를 생성하는 방식에는 대표적으로 2가지 방식이 있습니다.
- 메서드 시그니처를 먼저 생성하고 기능을 구현
- 기능을 구현하고 메서드 시그니처를 생성
방식 1
package class01;
import java.util.Scanner;
public class Test01 {
// 1. 메서드 시그니처를 먼저 만들고, 그 다음에 기능을 구현
// [1]
// Q1) 어떤수가 입력되었을때, 짝수인지 아닌지 판별하는 함수
// INPUT : int 1개
// OUTPUT : boolean
public static boolean isEven(int num) {
if (num % 2 == 0) {
return true; // 함수 즉시 종료
}
return false;
}
}
방식 2
package class01;
import java.util.Scanner;
public class Test01 {
// 2. 기능을 먼저 만들고, 메서드 시그니처를 문제에 맞추는 방법
// [2]
// Q2) main에 구현되어있던 기능을 뜯어서 func()에 우선 넣고 시작
public static int checkMinus(int num, int b) {
if (num < 0) {
b++;
}
return b;
}
}
함수 호출
함수에 값(원시 자료형)을 전달하는 것과 객체를 전달하는 것에는 큰 차이가 있습니다.
Call By Value
call by value는 값에 의한 호출이라는 뜻입니다. 값에 의한 호출이란, 함수에 인자를 넘길 때, 그 값을 복사해서 넘기는 형태를 말합니다. 함수 내에서는 복사된 값으로 새로운 작업을 하기 때문에, 원래의 값은 변경되지 않습니다.
Call By Reference
call by reference는 참조에 의한 호출이라는 뜻입니다. 참조에 의한 호출이란, 함수에 인자를 넘길 때, 값이 아닌 객체를 참조하는 주소를 넘기는 형태를 말합니다. 객체를 참조하는 주소를 받았기 때문에, 함수 내에서 새로운 연산이 수행된다면 원래의 값에 영향을 끼치게 됩니다.
함수 오버로딩 (Method Overloading)
함수 오버로딩이란 같은 이름의 메서드를 중복하여 정의하는 것을 의미합니다. 자바에서는 한 클래스 내에 같은 이름의 메서드를 둘 이상 가질 수 없지만 매개변수의 개수나 타입을 다르게 하면, 하나의 이름으로 메서드를 작성할 수 있습니다. 즉, 메서드 오버로딩은 서로 다른 메서드 시그니처를 갖는 여러 메서드를 같은 이름으로 정의하는 것이라고 할 수 있습니다.
함수 오버로딩의 조건
- 메서드명이 같아야 합니다.
- 메서드 시그니처, 즉 매개변수의 개수 또는 타입이 달라야 합니다.
메서드 오버로딩의 대표적인 예로 println() 메서드가 있습니다. println() 메서드는 전달받는 매개변수의 타입에 따라 해당 메서드를 호출하게 됩니다.
GitHub
https://github.com/Qkrwnsgus0522/Java
728x90