코드 그라데이션

Day11 메소드 예제 (1) 나름대로의 해석 본문

Java/Mega-Method

Day11 메소드 예제 (1) 나름대로의 해석

완벽한 장면 2023. 3. 29. 23:13

코드

package Day11;

public class MethodTest {
	//1. 주고 받고
	static String printHello(String name) {
		return "안녕하세요"+name+"님";
	}
	
	//2. 주고 안받고
	static int sum() {
		int a = 10;
		int b = 20;
		return a + b;
	}
	
	//3. 안주고 받고
	static void outputName(String name) {
		System.out.println("안녕하세요"+name+"님");
	}
	
	//4. 안주고 안받고
	static void printBye() {
		System.out.println("바이~~~~~");
	}
	
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str =printHello("홍길동");
		System.out.println(str);
		
		System.out.println(printHello("호랑이")); 
		
		int result = sum();
		System.out.println(result);
		
		outputName("강아지");
		
		printBye();
		
	}

}

 

실행 결과

안녕하세요홍길동님
안녕하세요호랑이님
30
안녕하세요강아지님
바이~~~~~

 

(1)

이제 약간의 뇌피셜을 섞어가면서, 매커니즘을 정리해보자.

리턴값은 main 메소드에게 다른 메소드가 주는 값이다.

그래서 메인 메서드는 그 값을 가지고 출력. 

 

(2)

지금 그러면 1. 주고받고 부분에서는

"안녕하세요"+name+"님" 이라는 이 return값 자체가,  str이라는 String 변수에 그대로 저장된 상황인것이다.

그래서 String name 부분만 홍길동이 대입되어.

출력하면 "안녕하세요홍길동님" 이라는 한 문장이 출력이 되는 것이다.

 

(3)

두 번째 출력값인 "안녕하세요호랑이님" 문장은.

같은 과정을 겪어야 하지. 원칙적으로는, 그런데 지금 홍길동 자체가 호랑이로만 바뀌어서 출력되는 것과 마찬가지.

마치 변수는 가장 최근에 업데이트 된 값이 저장되는 것과 같다고 여기면 된다.

 

------------------

 

(4)

sum() 메소드

2. 주고, 안받고 메서드

즉 리턴값 o, 파라미터 x 인 메소드이다.

 

주고 받고 메서드에서 주는 것이 있으면 main 메서드에서 그 값을 변수에 가져왔던 것처럼.

파라미터가 없으나 리턴값이 있는 메서드인 sum() 그 자체를, 어떤 변수(result)를 선언하여 저장할 준비를 한다.

그리고 이 result를 그대로 출력하는 것이다. 그래서 30이 출력된다.

 

(5)

outputName("강아지"); 메소드

안주고(리턴값 x) 받고(파라미터 o) 메서드이다.

리턴값이 따로 없기 때문에, outputName() 메소드 내부에 있는 문장 그 자체가 main 메소드에서 출력되게 된다.

(변수 선언 및 값 저장 필요 x)

그런데 name 인자를 받고 있기 때문에, 문장 안에 있는 name에 "강아지" 가 들어가고, 그 부분이 강아지라는 단어로 바뀌어 출력된다. 그래서  "안녕하세요강아지님" 이 출력 결과이다.

 

(6)

printBye() 메소드.

리턴값도 없고, 파라미터도 없는 메소드이다.

일단 리턴값이 없기 때문에 이것 역시 메소드 내부의 문장이 그대로 출력된다.

받는 값도 없기 때문에 무언가를 넣어서 출력할 이유도 없으므로, 메소드 내부의 문장인 "바이~~~" 가 그대로 출력된다.

 

728x90
Comments