[JAVA] Method

Coastby·2022년 7월 25일
0

JAVA

목록 보기
5/33

○ 메소드란?

  • 일련의 코드 단순화하는 방법 / 입력값에 대응하는 반환값이 있다
  • 다른 프로그래밍 언어에는 함수라는 것이 별도로 존재하지만, 자바에서는 클래스를 떠나 존재하는 것은 있을 수 없기 때문에 자바의 함수는 따로 존재하지 않고 클래스 내에 존재한다. 자바는 이러한 클래스 내의 함수를 메소드라고 한다
💡 보통 함수와 메소드가 공존하는 언어 (예:파이썬)에서는 두 개를 구분하여 말하기도 하지만 자바는 보통 메소드와 함수를 구분하여 말하지 않는다. 다만 자바에서 사용되는 함수의 정확한 명칭은 메소드이다.

○ 메소드의 호출 (calling method) : 만들어진 메소드를 사용하는 것

👉객체 내부에서 호출

1) 리턴값이 없어나, 있어도 받고 싶지 않을 경우

method (parameter, ...);
<//변수가 있는 경우
public class className {
  public static void methodName(){
  System.out.println("This is a method");
}
 public static void main(String[] args) {
    methodName();
  }
}
//변수가 없는 경우
public class myClass {
	public static void sum(int a, int b){
		  int c = a + b;
		  System.out.println("The sum of A and B is "+ c);
	}
	 public static void main(String[] args) {
          sum(20, 30);
	 }
}

2) 리턴값이 있는 메소드를 호출하고, 리턴값을 받고 싶은 경우 : 변수를 선언하고 리턴값 대입

//변수가 없는 경우
public class myClass {
	public static void sum(int a, int b){
		  int c = a + b;
		  System.out.println("The sum of A and B is "+ c);
	}
	 public static void main(String[] args) {
      int reuslt1 = sum(20, 30);
	 }
}

👉 객체 외부에서 호출

클래스 외부에서 다른 메소드를 호출할 경우 클래스로부터 객체를 생성한다. 메소드는 객체에 소속된 멤버이므로 객체가 존재하지 않으면 메소드도 존재하지 않기 때문이다.

1) 객체를 생성한다

‘ 참조 변수' : 생성된 클래스를 ‘인스턴스'라고 한다. 그리고 인스턴스를 가리키는 클래스형 변수를 ‘참조 변수'라고 한다.

ClassName 참조변수 = new ClassName(parameter,...); 

2) 객체가 생성되면 참조 변수.를 사용해서 메소드를 호출한다.

타입 변수 = 참조변수.메소드(매개값,...)

3) 클래스 외부에서 메소드 호출

  • 이클립스에서는 작동이 안된다.모르겠다
    Description	Resource	Path	Location	Type
    No enclosing instance of type HelloWorldApp is accessible. Must qualify the allocation with an enclosing instance of type HelloWorldApp (e.g. x.new A() where x is an instance of HelloWorldApp).	HelloWorldApp.java	/HelloWorld	line 11	Java Problem

참고 : https://www.simplilearn.com/tutorials/java-tutorial/methods-in-java
https://dustink.tistory.com/47

○ 메소드의 구조

○ 연습문제1

👉문제
1~6 사이의 정수를 반환하는 rollDie() 메소드를 완성하여, 출력 예와 같은 결과를 얻으시오.

💡 Math.random() : 0.0이상 10.0 미만의 임의 실수를 반환한다
# 파라미터가 없는 메소드 호출 예
double x = Math.random(); // 0.0 <= x < 1.0

// 0.0 <= r < 10.0
double r = 10 * Math.random();
// 0, 1, ..., 9 중 하나
int temp = (int) r;
// 1, 2, ..., 10 중 하나
int n = temp + 1;
  • 파라미터가 없는 메소드
<public class Random {
  public static void main(String[] args) {
    // 메소드로부터 값을 반환
    int x = rollDie();
    
    // 결과 출력
    System.out.printf("주사위의 눈: %d", x);
  }
  
  // 1~6 사이의 임의의 정수를 반환
  public static int rollDie() {
    /* 해당 메소드를 완성하시오. */
    double r = 6 * Math.random(); //0.000 ~ 0.9999 => 0.0000 ~ 5.9999
    int temp = (int) r; //0 ~ 5
    int result = temp + 1; //1 ~ 6
    return result;
  }
}

○ 연습문제2

👉문제
삼겹살 1인분의 무게는 180g이고, 또 삼겹살 1g의 칼로리가 5.179kcal 이다. 이를 참고하여 삼겹살 3인분의 칼로리를 소수점 이하 둘째 자리까지 출력하시오.

public class Pork {
  public static void main(String[] args) {
    /* 1. 변수를 생성하시오. */
    int num = 3;
    /* 2. 메소드를 통한 칼로리를 계산하시오. */
    double result = Calcal (num);
    /* 3. 결과를 출력하시오 */
    System.out.printf("삼겹살 %d인분: %.2f kcal", num, result);
  }
  /* 4. 칼로리 계산을 위한 메소드를 작성하시오. */
  public static double Calcal (int n) {
    double calories = n * 180 * 5.179;
    return calories;
  }
}
profile
훈이야 화이팅

0개의 댓글