자바에서는 함수를 메서드라 한다.
public class Method1{
public static void main(String[] args) {
int a = 1;
int b = 2;
int sum = a + b;
int sum 2 = add(10, 20);
}
public static int add(int a, int b){ // 선언부
int sum = a + b; // 본문 시작
return sum;
}
}
모든 메서드는 return을 호출해야한다.
반환타입이 void인 경우에는 return이 생략가능하다. (자바가 알아서 return을 넣어준다.)
return문 만나면 즉시 함수를 빠져나간다.
함수의 반환값이 있어도 반환값을 안받고 무시도 가능하다.
(void는 받으면 안됨)
함수 이름은 동사로 시작 시킴
단축키: 함수이름 누르고 command + b하면 해당 함수로 이동함
함수 호출시 메모리공간이 할당됨
함수 실행 끝나면 사라짐
인수(Argument) == 인자
호출할 때 넘기는 값. 즉, 내부로 들어가는 값
매개변수(Parameter)
메서드 정의 시 선언한 변수를 말함
넘어오는 값을 중간에서 전달하는, 매개하는 변수
메서드 내부에서 사용할 수 있는 변수
메서드 호출 및 값 전달
자바는 항상 변수의 값을 복사해서 대입한다.
메서드 형변환
메서드를 호출할 인자와 매개변수의 타입이 맞지 않는경우에 형변환이 필요하다.
타입이 다른경우에는 자동 형변환이 가능한 경우(인자 타입이 함수의 매개변수 타입보다 작은 타입인 경우)에만 호출이 가능하다.
public class Casting{
public static void main(String[] args){
int number = 100;
printNum(number); // 인자로 넘김
}
public static void printNum(double n){// 매개변수로 받음, 자동형변환됨 int -> double
System.out.println(n);
}
}
메서드 오버로딩
함수 이름이 같고 매개변수가 다른(매개변수의 순서와 타입이 다른경우) 메서드를 여러개 정의하는 것을 메서드 오버로딩(Overloading)이라 한다.
(Overloading의 의미: 과하게 물건을 적재했다)
(반환 타입만 다른 경우는 취급하지 않는다. )
==메서드 시그니처(메서드를 구분할 수 있는 기준)
int plus(int a, int b)
int plus(int c, int d)
// 위와 같은 경우도 취급하지 않는다.
자기 타입에 맞는 메서드를 찾아서 실행해되, 없는 경우에는 형 변환 가능한 타입의 메서드를 찾아서 실행함
코드를 메서드를 사용하는 식으로 리펙토링을 하면 main()은 상세 코드가 아닌, 전체 구조(목차같은 느낌)를 한눈에 볼 수 있게 되는 모습으로 된다. (모듈처럼 만들어두는 모습) 이런 리펙토링을 메서드 추출(Extract Method)라고 한다. 꼭 재사용 하지 않더라도 보기좋게 하기 위해서 리펙토링을 진행한다.
'[프로그래머스]Java > Java입문' 카테고리의 다른 글
배열 (0) | 2024.07.05 |
---|---|
사용자 입력 (1) | 2024.07.05 |
스코프(변수의 접근 가능 범위), 형변환 (0) | 2024.07.05 |
반복문 (0) | 2024.07.05 |
조건문 (0) | 2024.07.05 |