메소드의 기본
- 함수와 같은 역할
- 코드 간결성 높임
- 변수 혹은 상수를 입력하면 메소드 내부에서 연산을 거친 뒤 결괏값을 출력 → 메소드에는 입력과 출력이 존재
- 입력
- 매개변수 or 파라미터
- 없을 수도, 무한히 많을 수도 있음
- void를 제외한 모든 자료형을 파라미터로 사용할 수 있음
- 매개변수로 선언된 변수들은 메소드 내에서 지역변수처럼 사용 가능
- 출력
- return value(리턴 값) - 메소드가 종료된 뒤 최종으로 남는 결과 값
- 메소드의 기본 구조
- 메소드 리턴 값의 자료형
- 메소드 이름
- 매개변수
- 메소드 내용
- return
import java.io.*; class Main { public static int add(int a, int b) { int result = a+b; return result; } public static void main(String[] args) throws Exception { System.out.print(add(4, 6)); } }
- 위와 같이 메소드를 만들고 메소드 내용을 코딩하는 것을 ‘메소드 정의’라고 함
- 메소드를 사용하려면 메소드 이름, 매개변수를 묶는 괄호, 매개변수 자료형에 알맞는 데이터 필요
return
- 메소드의 종료를 의미
- 작성된 결과를 내보내는 과정 - 값을 반환한다
- return으로 반환될 값: 메소드를 정의할 때 명시했던 메소드 return 값의 자료형과 동일한 자료형의 변수 혹은 상수만 가능
void
- return 값에 대해 예외로 판단되는 자료형
- 특수한 자료형으로 어떤 값도 저장하지 않는 빈 공간을 뜻함
- return 값의 자료형이 void → 어떤 값도 return하지 않는 메소드 ⇒ return값은 어떠한 것도 존재x, return 문구 생략 가능
main 메소드
- 메소드는 main메소드와 사용자 정의 메소드 두개로 나눠짐
- 사용자 정의 메소드: 위에서 설명했던 프로그래머가 정의하여 사용하는 메소드
- 모든 프로그램에서 오직 하나만 존재하는 메소드
- 자바 프로그램은 main 메소드로부터 시작되어 main 메소드의 끝과 함께 종료됨
- 가장 먼저 실행
메소드 사용하기
- 메소드가 사용하려면 우선 메소드가 정의되어 있어야 함
- 메소드는 main함수를 포함한 다른 메소드에서 사용 가능함
- 메소드를 사용하는 것을 ‘콜(call)한다’라고 표현함
오버로딩(Overloading)
- 메소드를 사용하는 방법 중 하나
- 메소드의 이름은 동일하게 정의하고 매개변수 혹은 리턴 값만 변경하여 정의하는 기법
import java.io.*;
class Main {
static int minus(int a, int b) {
return a - b;
}
static double minus(double a, double b) {
return a - b;
}
public static void main(String[] args) throws Exception {
int result1 = minus(2, 5);
System.out.println(result1);
double result2 = minus(5.1, 3.9);
System.out.println(result2);
}
}
- 같은 이름의 메소드가 두 개 있지만, 메소드 오버로딩을 통해 다른 입력값 혹은 출력값을 사용할 수 있음
- 같은 동작을 하는 메소드지만 매개변수의 자료형을 다르게 하여 사용성을 높인 예
- 변수 혹은 메소드가 너무 많거나 비슷한 동작을 하는 메소드를 다수 만들어야 할 경우 등에 유용함
Call by Value
import java.io.*;
class Main {
static int times(int a, int b, int c) {
c = a + b;
return a * b;
}
public static void main(String[] args) throws Exception {
int a = 1;
int b = 2;
int c = 3;
int result = times(a, 5, c);
System.out.println("result = " + result);
System.out.println("int c = " + c);
}
}
- times 메소드와 main 메소드의 변수 이름이 a, b, c로 동일하지만, 컴퓨터 내부에서는 서로 다른 공간에 할당된 데이터 → 아무리 times 내부의 값을 변화시켜도 main 메소드의 변수 값에는 전혀 영향을 끼치지 않음. 이를 Call By Value라고 표현
'바로 실행해보면서 배우는 java'를 학습하며 정리한 문서
'기타 > Java' 카테고리의 다른 글
Java 문법(6) - 클래스와 객체, 접근제한자 (0) | 2022.02.07 |
---|---|
Java 문법(5) - 배열 기초, String (0) | 2022.02.06 |
Java 문법(3) - 연산자, 조건문, 선택문, 반복문 (0) | 2022.02.06 |
Java 문법(2) - 메모리, 자료형 (0) | 2022.02.06 |
Java 문법(1) - 시작 (0) | 2022.02.06 |