코린이
article thumbnail
Published 2023. 3. 9. 14:10
JAVA / Method(메소드) 카테고리 없음

메소드

클래스와 떼놓을 수 없는게 바로 메소드이다! 메소드 = 함수인데 함수를 잘 생각해보자.

f(x) = 2x +2

 

라는 함수가 있다고 치자. 이 함수는  x가 함수에 들어갔을 때 (x * 2) + 2가 되어서 나오는 기능을 가진 함수이다. 만약 x가 4라면

f(4) = 10이 되는 함수라는 것이다! 메소드도 이런 기능을 가지고있다!

메소드는

이런 형식으로 호출하게 된다. 그럼 메소드를 직접 만들어보자!

 

class Number{	
	public int sum1(int a, int b) {	
	    return a + b;
	}	
}

 

Number이라는 클래스 안의 sum1이라는 메소드는 int a와 int b를 받아서 그 둘을 더해주는 역할을 한다.

그럼 Blog 클래스에서 sum1메소드를 한 번 불러보겠다.

public class Blog{
	public static void main(String[]args) {
		
		Number num = new Number();
		
		int a = 10;
		int b = 3;
        
		System.out.println(num.sum1(a, b));
	}
}

 

다른 클래스에 있는 메소드를 불러내려면 그 클래스의 객체를 생성해 준 후 ' . '으로 메소드를 연결시켜줘야 한다.

다른 방식으로 똑같은 값이 출력되게 하는 메소드를 만들어보겠다.

 

public void sum(int a, int b) {	
    System.out.println(a + b);
}

 

무엇이 달라졌을까? 

public int sum1(int a, int b) {	
    return a + b;
}	

------------------------------------------
public void sum2(int a, int b){
	System.out.println(a + b);
}

 

일단 메소드 선언부가 달라졌다! int -> void로 변했다. 그럼 int와 void는 무엇일까?

int 는 리턴해줄, 메소드를 호출한 곳으로 값을 돌려보내줄 데이터 타입이다. 그럼 String도 들어갈 수 있을까? 당연하다! boolean, double 등등 다 가능하다! 

대신 무조건 그 타입에 맞는 return 값이 있어야 한다. sum1 메소드의 리턴타입은 int형인데 만약 double값을 리턴하려고 하면

Type mismatch: cannot convert from double to int

요런 오류가 뜨는데 리턴해줄 타입이랑 내가 지정한 타입이 미스매치된다는 뜻이다! 

 

그럼 void는 무엇일까?  바로 return할 값이 없다는 뜻이다. 그래서 위처럼 a + b를 출력해주고싶다면 메소드 안에 직접 프린트문을 작성해줘야 값을 출력할 수 있다.

그럼 둘 다 출력해보도록 하겠다

Number num = new Number();

int a = 10;
int b = 3;

System.out.println(num.sum1(a, b));
num.sum2(a, b);

sum1은 메소드 안에 프린트문이 없으니 출력하려면 프린트문 안에 넣어줘야하고 

sum2는 메소드 안에 프린트문이 있으니 그냥 호출만 해도 출력이 되는 것이다.

 

그럼 사용자에게 숫자를 입력하고 1부터 입력받은 숫자까지 출력하는 메소드를 만들어보겠따!

 

class Number{
	
	public void sum() {
		
		Scanner sc = new Scanner(System.in);
		System.out.println("숫자를 입력하세요");
		int num = sc.nextInt();
		
		for(int i = 1; i <= num; i++) {
			System.out.print(i + "\t");
		}		
	}	
}

// 메인메소드 부분
public class blog{
	public static void main(String[]args) {
		
		Number number = new Number();
		number.sum();	
	}
}

 

 

이처럼 메소드를 사용하게 되면 메인메소드가 엄청 간결하고 짧아진다는 장점이 있다! 

반응형
profile

코린이

@코인아님

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!