[Java]method

박진우·2022년 9월 9일
0

[Java]자바의 기초

목록 보기
9/16

메소드의 구현

sum method 구현
1. method 선언
-프로그램에서 여러번 반복 사용되는 특정 코드 덩어리를 별도의 method로 정의
2. method 사용
-선언된 method 이름을 통해 method를 사용
3. method 사용 효과
-전체 소스코드 양을 대폭 줄일 수 있고, 프로그램 내에서 중복되는 코드 덩어리 제거 가능
-중복되는 코드 덩어리를 수정할 경우 , method 내부에서만 수정하면 되어서 전체 코딩 속도 향상 가능

public class MethodBasic {

	public static void main(String[] args) {
	/*
	 * (1,10) => actual paramter list(argument)
	 * sum(1,10)을 기계어로 처리되는 명령어 리스트
	 * 1. 등록된 method list에서 sum이라는 이름을 가진 method signature를 이용하여 찾음
	 * 2. 찾은 sum method를 호출하고, method의 foraml parameter 인 startValue 변수의 메모리방에 1의 값을 넣고
	 * 		endValue 변수에는 메모리방에 10의 값을 넣음 
	 * 3. result라는 변수에 대하여 메모리 방을 잡고 method body의 명령어 실행
	 * 4. 최종 결과값을 갖고 있는 result 변수의 값을 sum method를 호출한 곳으로 넘겨줌
	 *  	-최종 결가 값을 넘겨주기 전에 method 의 내부 변수인 startValue , endValue ,result 변수의 메모리 방은 삭제됨
	 */	
	System.out.println("1부터 10까지의 합 = "+sum(1,10));
//		System.out.println("27부터 37까지의 합 = "+sum(27,37));
//		System.out.println("35부터 49까지의 합 = "+sum(35,49));
		sum(1,10);
	}
	
	
	//이름이 sum인 method 선언
	//parameter variable : int startValue , int endValue
	//	method signature : sum(int startValue , int endValue)
	//	foraml parameter list : int startValue , int endValue
	public static int sum(int startValue , int endValue) {	//메소드 헤더
		int result = 0;										//메소드 바디
		
		for(int i = startValue; i<=endValue; i++) {
			result +=i;
		}
		return result;
		
	}
}

메소드의 제일 큰 장점

  1. 한번 코딩 해 두면 다른 사람들에게도 공유 가능(더 이상 중복된 코딩할 필요 없음)
  2. 메소드를 사용하는 사람은 메소드의 실제 구현 코드내용을 이해하지 않고 얼마든지 사용가능 하다.
  3. 개발 생산성과 코드 재활용성이 높아진다.
public class GreatestCommonDivisor {
	
	//main method
	public static void main(String[] args) {
		Scanner S = new Scanner(System.in);
		
		System.out.println("첫번째 정수를 입력해 주세요");
		int n1 = S.nextInt();
		
		System.out.println("두번째 정수를 입력해 주세요");
		int n2 = S.nextInt();
		
		System.out.println("입력된 정수 '" +n1 +"' 부터 '"+n2+"' 까지의 최대 공약수 = "+gcd(n1,n2));
	}
	
	//최대공약수 구하기 메소드
	//2개의 입력 정수 n1,n2에 대하여 2부터 시작해 1씩 증가하면서 n1,n2 모두 나머지가 0인지 확인
	public static int gcd(int n1, int n2) {
		int gcd = 1;
		int k = 2;
		
		while(k<=n1 && k<=n2) {
			if( n1%k == 0 && n2%k==0) {
				gcd = k;
				System.out.println("임시 gcd = " + gcd);
			}
			k++;
		}
		return gcd;
	}
}

void

return 타입이 void인 메소드 사용 사례
-정보 출력용으로 사영됨

public class Grade {
	public static void main(String[] args) {
		System.out.print("78.5의 등급 : ");
		printGrade(78.5);
		System.out.println();
		System.out.print("59.5의 등급 : ");
		printGrade(59.5);
	}
	
	
	public static void printGrade(double score) {
		if(score>90) {
			System.out.println("A등급입니다.");
		}else if(score>80) {
			System.out.println("B등급입니다.");
		}else if(score>70) {
			System.out.println("C등급입니다.");
		}
		else if(score>60) {
			System.out.println("D등급입니다.");
		}else if(score>50) {
			System.out.println("F등급입니다.");
		}
		
		
	}
}

call by value

call by value의 정의 : method의 formal parmeter를 호출할 때 formal parmeter의 변수로 값이 전달
-참고 :call by reference의 정의 : method의 formal parmeter를 호출할 때
formal parmeter의 변수로 주소가 전달

public class CallByValue {
	public static void main(String[] args) {
		int num1 = 1;
		int num2 = 2;
		System.out.println("swap method - swap전 num1 :"+num1+" num2 "+num2);
		swap(num1, num2);
		//값을 넘겨준게 아닌 복사이기 때문에 num1 과 num2 가 원래의 수로 돌아옴
		System.out.println("swap method - swap후 num1 :"+num1+" num2 "+num2);
	}
	
	public static void swap(int n1, int n2) {
		
		System.out.println("swap method - swap전 n1 :"+n1+" n2 "+n2);
		
		int temp = n1;
		n1 = n2;
		n2 = temp;
		
		System.out.println("swap method - swap후 n1 :"+n1+" n2 "+n2);
	}
}
profile
개발자를 꿈꾸는 사람입니다

0개의 댓글