JAVA_20_메소드

charl hi·2021년 8월 9일
0

JAVA

목록 보기
20/53

메소드 작성

1. 제어자 반환타입 메소드이름 (타입 매개변수명1, 타입 매개변수명2, ...)

  • 제어자 반환타입 메소드명 (타입 변수1, 타입 변수2...) {}

  • 제어자 : (default) / static ...

  • 반환타입 : int / long / double / void ...

  • 타입 매개변수명은 0~n개 가능


2. 지역변수 lv

: 메소드 내에 선언된 변수

  • 메소드가 종료되면 사라짐
    -> 메소드1, 2의 (지역)변수의 이름이 같아도 상관없다.

  • 매개변수도 지역변수임!!

int add(int x, int y)
{
	int result = x + y;
	return result;
}

-> 여기서 지역변수lv는 x, y, result !



메소드 호출

class MyMath {
    //...
    
	long add(long x, long y) {
		//...
	}
    
	double divide(long x, long y) {
		//...
	}
    
    	static void method() {
    		//...
    	}
    //...
}

1) static 제어자가 없는 메소드

①✨✨ 객체 생성

MyMath mm = new MyMath();

②✨✨ 참조변수.메소드명(); 으로 호출한다!!

  • 반환타입이 있으면 변수도 준비
long result1 = mm.add(5L, 3L);
long result2 = mm.substract(5L, 3L);
long result3 = mm.multiply(5L, 3L);
double result4 = mm.divide(5L, 3L);
long result5 = mm.max(5L, 3L);
  • 👀👀 같은 클래스 내여도 꼭 객체&참조변수 사용해야 하나??
    -> ✨✨그렇다!

2) static 제어자가 있는 메소드

객체 생성이 💖필요 없다💖

가. 같은 클래스라면

②🎇🎇 메소드명(); 으로 호출한다!!

  • 반환타입이 있으면 변수도 준비

나. 다른 클래스라면

②🧨🧨 클래스명.메소드명(); 으로 호출한다!!

  • 반환타입이 있으면 변수도 준비
method();
int Result = add(3, 5);
MyMath2.method();



메소드이름(값1, 값2...);


static int add(int x, int y) {
	return x+y;
}

public static void main (String [] args) {
	...
	...
    print99danall();  
    int Result = add(3, 5);
    ...
}
  • 👀👀 print99danall();은 메소드 호출에 왜 옆에 변수가 없나?
    -> ✨ 아무것도 반환하지 않는 void형이기 때문에
    -> void print99danall();

  • 👀👀 add();는 메소드 호출에 왜 옆에 변수가 필요하나?
    -> ✨ 작업결과가 있기에, 이 작업결과인 반환값int을 저장할 변수가 필요하다.
    -> 없다고 에러가 나진 않으나, 저 메소드를 호출한 결과를 사용할 수가 없다.


자바의정석 Ex6_4


public class Ex6_4 {

	public static void main(String[] args) {
		// 메서드 호출 관련 예제
		
		MyMath mm = new MyMath();  // 객체 생성=인스턴스 생성
		long result1 = mm.add(5L, 3L);
		// 호출한 메소드의 결과값을 메인안에 있는 변수에 저장
        	// static이 아닌 메소드이므로, 객체생성 및 리모컨인 mm.이 필요하다.
		long result2 = mm.subtract(5L, 3L);
		long result3 = mm.multiply(5L, 3L);
		double result4 = mm.divide(5L, 3L);
		long result5 = mm.max(5L, 3L);
		
		System.out.println("add(5L, 3L) = "+result1);
		System.out.println("subtract(5L, 3L) = "+result2);
		System.out.println("multiply(5L, 3L) = "+result3);
		System.out.println("divide(5L, 3L) = "+result4);
		System.out.println("max(5L, 3L) = "+result5);
	}

}

//MyMath 라는 클래스 설계도

class MyMath {
	
	long add(long a, long b) {
		long result = a + b;
		return result;
		// return a + b;  라고 한 줄로 정리할 수 있다!
	}
	
	long subtract(long a, long b) {
		return a - b;	
	}
	
	long multiply(long a, long b) {
		return a * b;
	}
	
	double divide(double a, double b) {
		return a / b;
	}
	
	long max(long a, long b) {
		return (a>b)? a : b;
	}
}

add(5L, 3L) = 8
subtract(5L, 3L) = 2
multiply(5L, 3L) = 15
divide(5L, 3L) = 1.6666666666666667
max(5L, 3L) = 5


클래스와 메소드

클래스

: 함수뿐만 아니라 관련된 변수까지도 한꺼번에 묶어서 관리하고 재사용할 수 있게 해주는 것

클래스 멤버

1. 속성

: 클래스에 포함된 변수

2. 메소드

: 클래스에 포함된 함수


return문

  • 실행 중인 메소드를 종료하고 호출한 곳으로 돌아간다.

1. 메소드 반환타입이 void 타입일 경우

  • return 생략 가능

  • 메소드 안의 system.out.print();등은 가능하다. 이건 반환이 아니니까!

  • 👀 return이 있다면??
    -> ✨메서드 종료✨하고 호출한 곳으로 돌아가라!!

2. 메소드 반환타입이 void 타입이 아닐 경우

  • 반드시 return 필요



Ref

0개의 댓글

관련 채용 정보