본문 바로가기
Programming 기초/Java

[Java] 메소드의 입력

by 뭉제 2023. 3. 16.
목차
1. 메소드의 필요성
2. 값을 받는 메소드

 

 

메소드는 클래스와 관련된 작업을 하는 함수이다.

앞에서 equals 메소드, cotains 메소드, Math 클래스의 floor 메소드 등을 사용했었다.

 

public class FirstMethod {
	public static void main(String[] args) {
		System.out.println("Hello Method");
		System.out.println(Math.floor(1.1)); //1.0
	}
}

· Math.floor(double a): double 타입의 데이터를 받아서 내림 연산을 수행해 double 타입으로 반환

· main 메소드는 특수한 메소드로, 클래스를 실행할 때 어떠한 명령을 더 내리지 않아도 main 메소드를 실행한다.

 

 

메소드의 필요성


1억줄 이상의 코드가 있을 때 중간에 어떤 작업을 하는 코드가 여러 줄 있고, 그 코드는 또 한참 후에 여러번 등장한다.

만약 그 코드를 수정해야 하는 상황이라면 어떻게 해야할까?

-> 메소드를 이용하면 쉽게 같은 코드를 재사용하고, 유지보수를 쉽게 할 수 있다.

 

public class WhyMethod {
	public static void main(String[] args) {
		//100000000
		System.out.println("-");
		System.out.println("a");
		System.out.println("a");
		//100000000
		System.out.println("-");
		System.out.println("a");
		System.out.println("a");
		//1000000000
		System.out.println("-");
		System.out.println("a");
		System.out.println("a");
	}
}

 

위 코드에서 "a"가 아니라 다른 문자열을 콘솔에 출력해야할 때

1억줄이 넘는 코드를 일일이 수정하는 것보다

해당 부분을 메소드로 바꾸고, 메소드를 수정하는 식으로 하면 훨씬 비용이 줄어들게 된다.

 

 

<참고> 메소드 추출하기

· 메소드로 추출하고 싶은 부분을 블록으로 지정한 후 Refactor -> Extract Method 클릭 

 

· 메소드 이름 입력하고 OK 클릭 

 

· printTwoTimesA 메소드 생성

public static void printTwoTimesA() {
		System.out.println("-");
		System.out.println("a");
		System.out.println("a");
}

 

 

값을 받는 메소드


메소드는 인자를 받아서 어떤 값을 도출하는 기능도 넣을 수 있다.

 

[메소드의 구조]

접근제어자 리턴타입 메소드이름(입력타입 매개변수, ...){
	...
    return 리턴값; // 리턴타입이 void인 경우 필요없다.
}

· 매개변수(parameter): 메소드에 전달된 값을 저장하는 변수

· 인자(argument): 메소드를 호출할 때 전달하는 입력값(실제 데이터)

 

=> 매개변수를 넣어서 만든 메소드는 매개변수의 값에 따라 다른 결과를 만들 수 있다.

 

 

매개변수를 통해 원하는 문자열과 구분자를 출력하는 메소드를 만들어 본다.

* 아규먼트와 파라미터 참고 -> https://mungje.tistory.com/13

 

public class WhyMethod {
	public static void main(String[] args) {
			    //인자, argument
		printTwoTimes("a", "-");
		//100000000
		printTwoTimes("a", "*");
		//100000000
		printTwoTimes("a", "&");
		printTwoTimes("b", "!");
	}
					//매개변수, parameter
	public static void printTwoTimes(String text, String delimiter) {
		System.out.println(delimiter);
		System.out.println(text);
		System.out.println(text);
	}
}

· printTwoTimes 메소드는 호출할 때마다 문자열과 구분자를 입력받아 콘솔에 출력한다.

 

 

<참고> 인자 전달 방식

1. 매개변수에 기본 타입의 값이 전달되는 경우: 이 복사되어 전달 

=> 실인자 값은 변경되지 않는다.

 

2. 매개변수에 객체가 전달되는 경우: 레퍼런스가 복사되어 전달

=> 실인자 객체 공유(객체의 필드값 변경 가능)

 

3. 매개변수에 배열이 전달되는 경우: 레퍼런스가 복사되어 전달

=> 실인자 배열 공유(배열의 원소값 변경 가능)

 

 

main 메소드
public static void main(String[] args){
}

· 자바 응용프로그램의 실행은 main 메소드부터 시작한다.

· 자바 응용프로그램이 실행을 시작할 때 JVM에 의해 호출되어야 한다. -> public

· main 메소드를 포함한 클래스의 객체가 생성되기 전에, 처음부터 JVM에 의해 호출된다. -> static

· 아무 값도 리턴하지 않는다. -> void

· 문자열 배열(String[ ])이 매개변수(args)로 전달된다.

  - 명령행에 입력된 인자들을 문자열 배열로 만들어 main 메소드에 전달한다.

 

 

 

 

'Programming 기초 > Java' 카테고리의 다른 글

[Java] 메소드의 활용  (0) 2023.03.19
[Java] 메소드의 출력  (0) 2023.03.17
[Java] 제어문과 배열 응용  (0) 2023.03.14
[Java] 반복문과 배열  (0) 2023.03.11
[Java] == vs equals  (0) 2023.03.09

댓글