Method
import java.util.Scanner;

//앞으로 main내부에는 연산,기능이 있는 코드를 넣지 않고 Method화 시키는게 좋다. 

public class Exam_01 {//벤처회사 Exam_01 ~예시

	//method 정의부 : method를 정의한 부분 / method가 이런 이름을 가지고 있고, 이런 매개변수를 가지고 있고, 이런 리턴값을 가지고, 이런 기능을 수행한다
	public static int plus(int num1, int num2){ //plus라는 이름의 직원
	//plus는 int형 변수 2개를 준비해야함. main에서 숫자2개를 인자값으로 받으니까
	//'method가 인자값을 받기 위해 만든 변수'와 'main에서 보내는 인자값'은 자료형이 일치해야한다 
	//인자값을 받기 위해 만든 변수 = ""매개변수"" (plus와 main의 인자값을 주고받을때의 통신매개체가 되는 매개변수)
	//엄밀히 따지면 용어 정리 : 받아주는 값 = 인수값 = 매개변수 = argument
	
		//plus의 중괄호 안에서는 plus라는 직원이 해야하는 일을 넣어주면 됨.
		int result = num1+num2; //result는 합계를 담는 역할로 만든 변수로 변수이름은 내 마음대로 해도 됨 
		
		
		//자신의 일을 다 했으면 Reporting(보고)해야한다.
		//작업한 결과를 main에게 '''반환... 즉 되돌려보내야한다(return)'''.
		//현재 plus가 해야할 일을 수행 후 작업한 결과를 result에 저장했기 때문에
		//result변수에 저장된 값을 main에게 되돌려주면 된다.
		//Method 자신이 call된 위치로 반환을 해주게 된다.
		return result;
		//return result (자료형)
		//return되는 result의 자료형을 method 이름 앞에 붙이게 됨
		//그러므로 5번 line에 method이름인 plus 앞에 int를 붙이게 됨
		//character를 돌려보내고 싶다면 method plus 앞에 char를 쓰고
		//double형으로 돌려보내고 싶다면 ,method plus 앞에  double을 쓴다
		
		//public static은 객체지향 어쩌구인데 나중에 배움.. 일단 그냥 일케 쓴다고만 외우고 사용...
		//이렇게 만든 method를 method prototype이라고 함
	}
	
	
	
	public static void main(String[] args) { //직원이자 ''사장''
		int w; // 중괄호 안에 있는 것은 지역변수
		//main에서 어떤기능을 수행하기 위해 method를 부르는 걸 method call이라고 한다.
		//주의사항 : method call을 할때는 꼭 그 기능을 수행해야하는 '위치'에서 불러야함.
		//불렀을때, 직원에게 일을 시키려면 어떻게 하세요~ 뭐로 하세요~ 라는 작업에 필요한  정보값을 줘야함. 메소드()   괄호 안에() 정보를 넣어줌.
		//일을 시킬때 필요한 정보가 있으면 ()안에 정보를 쓰고, 정보 없이면 일을 할 수 있으면 아무것도 안쓰고 소괄호를 열고 닫는다.()
		//method에 ()를 붙이면 method call한다고 하는데
		//method call하면서 ()안에 넘겨주는 값을 '인자값' 또는 '인수값'이라고 한다.
		
		//보편적으로 용어 : 인자값=인수값=파라미터(parameter)=아규먼트(argument)
		//엄밀히 따지면 용어 정리 : 보내는 값 = 인자값 = 파라미터(parameter)
		
		System.out.println(plus(10,5)); //method 호출부 : method call되는 부분
		//인자값을 plus 안에 써주면 실제 plus 직원에게 전달됨. ,로 구분한 입력들이 위치가 매개변수의 위치들에 그대로 변수에 들어감.
		//method 자신이 call된 지점으로 정확히!!!!!!!! 돌아가기 때문에, 돌아온 위치는 syso의 소괄호 안.
		//method가main에게 return한 값(result) 
		
		//제어문(if,for,while...)을 제외하고, keyword를 쓰고 소괄호를 열었다가 닫으면 method call 하는 부분임.
		//println도 method인 것임...... 맨 위에 import한 java.lang.*의 어디엔가에 method로 정의되어 있음. 
		//plus값의 return값이 println의 인자값이 되었다고 말할 수 있다!

		//plus : 사용자정의 method (사용자가 직접 만든 method 
		//println : 표준method(시스템 method라고도 함) (썬시스템즈어쩌구저쩌구들이 만든 java에 내장된 method)
		//표쥰method의 용법을 보면 대충 정의부가 예측 가능함
		/*
		 * String nextLine() {	
			}
			이렇게 생겼을 거임~~
		 * 
		 */
		
		int a=plus(9,6);
		//지역변수 a에 method의 return값을 담을 수도 있음(자료형이 맞다면)
		//int형 method인 plus는 int형 변수 a에 대입될 수 있음.
		//plus는 int와 마찬가지
		
		//System.in.read();
		//system.in.read()는 int값(아스키코드값)을 입력받는,사용자에의해 입력되어질 int값 
		//read()값은 return값이 int이므로 read()도 int임.
		//int b = System.in.read();
		
		double d = Math.random();
		//random() method는 인자값이 없으니 정의부에 매개변수가 비어있을 거임
		//반환되는 값이 0~1사이의 소수점값이니까 double random 어쩌구저쩌구로 되어있을거임
		//그러니까 double형 변수에 넣을 수 있는거임.
		//random 위에 마우스를 올리고 ctrl을 누르면 open declaration을 누르면 
		//
		
		Integer.parseInt(sc.nextLine());
		//nextLine은 String
		//인자값 nextLine(String)을 매개변수로 받으니까 매개변수 부분을 String으로 해서 인자값을 받을거임
		//그것을 int형으로 되돌려주니까, parseInt는 int형임. 즉 int parseInt라고 되어 있을거임.
		//그래서 int형 변수에 넣을 수 있는 것
		
		Scanner sc = new Scanner(System.in);
		
		sc.nextLine();
		//nextLine() 이라는 method인 것임
		//내가 만들진 않았지만, 위에 import된 java.util.Scanner 어딘가에서 method로 만들어진 것을 사용해 쓰고 있는 것임
		//표쥰method라도 용법을 보면 대충 정의부가 예측 가능함
		//nextLine()의 호출부에 인자값이 아무것도 없다면 method nextLine의 매개변수가 없는 것
		//nextLine method는 return 값이 string이므로 return값의 데이터자료형=nextline의 자료형이기 때문에
		//method 정의하는 부분에서 String nextLine 이라고 되어 있을거임
		
		//결과형_리턴값이 void인 method는 
		//method 내부의 실행문만 실행이 되고
		//return값이 void이므로 return값이 없다
	}
}

'자바 프로그래밍 > 코드' 카테고리의 다른 글

method 계산기 연습  (0) 2020.02.16
charAt, startWith, endWith, toCharArray, split 메서드  (0) 2020.02.16
로또 시뮬레이터  (0) 2020.02.12
로또번호 뽑기  (0) 2020.02.12
버블정렬  (0) 2020.02.12