개발의 시작과 끝

2020.02.22 / Day - 9 static 메서드, 매개변수, 리턴 본문

자바 공부

2020.02.22 / Day - 9 static 메서드, 매개변수, 리턴

개발지혜 2020. 2. 22. 19:17

a7A - 7일차

 

static 메서드

static - 고정시키다.

static을 사용하면 객체화 없이 설계도에 있는 능력을 바로 쓸 수 있다.

예를들어 달리다 메서드를 만들때 앞에 static을 붙이면 달리다 메서드는 static 메서드가 된다.

static 메서드는 함수고도 하며, 모든 인스턴스들이 공유하는 자원으로 사용하고 싶을 때 쓴다.

static이 붙어있는 경우 객체화 하지 않아도 되므로 new를 하지 않아도 돼서 편리하다.

바로 클래스로 쓸 수 있고, 변수나 메서드에 붙일 수 있다.

class Main {
  public static void main(String[] args) {
    자동차.달리다();
  }
}

class 자동차 {
  static void 달리다() { // 인스턴스 메서드
    System.out.println("자동차가 달립니다.");
  }
}

 

 

매개변수(parameter)

매개변수 함수(메서드) 안에서 미정이었다가 함수가 호출될 때 넘어오는 값으로 세팅 된다.

클래스 안에 void 달리다(int a)를 매개변수라고 한다.

자동차 달리다(70);에서 함수가 호출될 때 매개변수 안에 있는 값을 인자라고 한다.

매개변수를 사용할 때 규칙은 맞춰줘야 한다.

그리고 매개변수가 있으면 함수를 호출할 때 매개변수대로 값을 넣어줘야한다.

class 자동차 {
  ststic void 달리다() {
    int a = 10;
    System.out.println(a + "km/h");
  }
}

자동차.달리다();   출력 값 => 10km/h

▼ 매개변수 사용

class 자동차 {
  ststic void 달리다(int a) {
    System.out.println(a + "km/h");
  }
}

자동차.달리다(70);  출력 값 => 70km/h

 

 

리턴

class 계산기 {
  static void 더하기(int a, int b) { // void를 쓰면 return하지 않겠다고 선언하는 것이다.
  int c = a + b;
  System.out.println(c) // 30 출력만 한것이고 과제 제출을 하지 않은 것.
}

int x = 계산기.더하기(10, 20);
System.out.println(x + 20);

▼ return

class 계산기 {
  static int 더하기(int a, int b) { // 함수 리턴타입 -> 정수를 리턴한다.
  return a + b;
}

int x = 계산기.더하기(10, 20); // int x -> 의뢰자
System.out.println(x); // 30

int x = 계산기.더하기(100, 200);
System.out.println(x); // 300

의뢰자한테 과제를 제출하려면 값을 반환을 해야하는데 return이 그 역할을 한다.
과제를 제출하려면 return을 써야한다.

 

 

예제 문제

  • 리턴 출력
class Main {
  public static void main(String[] args) {
    int 결과;
    
    결과 = 계산기.합(10, 20);
    System.out.println("결과 : " + 결과); 
    // 출력: 결과 : 30

    결과 = 계산기.합(30, 20);
    System.out.println("결과 : " + 결과); 
    // 출력: 결과 : 50 
  }
}

class 계산기 {
  static int 합(int a, int b) {
    return a + b;
  }
}

 

  • 1부터 n까지의 합
class Main {
  public static void main(String[] args) {    
    int 결과1 = Math.oneToSum(3);
    System.out.println("결과1 : " + 결과1);
    // 출력 : 결과1 : 6
    
    int 결과2= Math.oneToSum(10);
    System.out.println("결과2 : " + 결과2);
    // 출력 : 결과2 : 55
  }
}


class Math {
  static int oneToSum(int n) {
    int sum = 0;
    for (int i = 1; i <= n; i++) {
      sum += i;
    }
    return sum;
  }
}

 

  • n부터 m까지의 합
class Main {
  public static void main(String[] args) {
    int 결과1 = Math.nToMSum(2, 3);
    System.out.println("결과1 : " + 결과1);
    // 출력 : 결과1 : 5
    
    int 결과2 = Math.nToMSum(5, 10);
    System.out.println("결과2 : " + 결과2);
    // 출력 : 결과2 : 45
  }
}

class Math {
  static int nToMSum(int a, int b) {
    int sum = 0;

    for (int i = a; i <= b; a++) {
      sum += i;
    }
    
    return sum;
  }
}