Java

Java 문법(4) - 메소드

sangchu 2022. 2. 6. 21:34

메소드의 기본

  • 함수와 같은 역할
  • 코드 간결성 높임

  • 변수 혹은 상수를 입력하면 메소드 내부에서 연산을 거친 뒤 결괏값을 출력 → 메소드에는 입력과 출력이 존재
  • 입력
    • 매개변수 or 파라미터
    • 없을 수도, 무한히 많을 수도 있음
    • void를 제외한 모든 자료형을 파라미터로 사용할 수 있음
    • 매개변수로 선언된 변수들은 메소드 내에서 지역변수처럼 사용 가능
  • 출력
    • return value(리턴 값) - 메소드가 종료된 뒤 최종으로 남는 결과 값
  • 메소드의 기본 구조
    1. 메소드 리턴 값의 자료형
    2. 메소드 이름
    3. 매개변수
    4. 메소드 내용
    5. 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'를 학습하며 정리한 문서