반응형
method
- 메서드 - 반복되는 코드 블록에 이름을 붙여 놓은 것.
- 반복되는 코드를 줄여준다
- 코드를 구조화 시켜 알아보기 쉽게 만든다.
<method선언 방법>
type name (parameters)
{
상세 기능
}
- type은 메소드가 돌려주는 값의 data type (=return type)
- parameters (매개변수) 필요한 값을 외부로 부터 전달받을 수 있는데 그 값에 대한 data type을 말한다.
- 아래와 같이 4가지 유형으로 사용할 수 있다.
parameter O, return O
parameter O, return X (return 값이 없다면 type은 void가 된다.)
parameter X, return O (parameter칸을 비워둔다)
parameter X, return X
➰ 반환 O, 매개변수 X (return O, parameter X)
- 1~10까지 합을 구하는 메소드 생성 및 사용
- 문자열의 결과를 반환하는 메소드 생성 및 사용
- return 키워드 활용
public class MethodEx01 {
public static void main(String[] args) {
//method는 method내부에 생성할 수 없다.
//절차지향언어인 C언어는 무조건 위쪽 바깥에서만 선언할 수 있지만
//객체지향언어인 java는 main밖에, 클래스 안에 어디서든 선언할 수 있다.
//1~10까지 합
/*
int sum = 0;
for(int i = 1; i <=10; i++) {
sum += i;
}
*/
//System.out.println(calSum());
int result = calSum();
System.out.println(result);
int result2 = calSum();
System.out.println(result2);
String result3 = ranStr();
System.out.println(result3);
String result4 = ranStr2();
System.out.println(result4);
}//메인 끝
//반환은 있고 매개값은 없는 모형(return O, parameter X) - 1부터 10까지 합
static int calSum()
{
int sum = 0;
for(int i = 1; i <=10; i++) {
sum += i;
}
return sum;
}
//반환은 있고 매개값은 없는 (return O, parameter X) - 문자열의 결과 반환
static String ranStr () {
String str = ""; //A + B + C ....+ Z
for(char c = 'A'; c <= 'Z'; c++) {
str += c;
}
return str; // String의 기본값 null
}
//반환은 있고 매개값은 없는 (return O, parameter X) - return 키워드의 활용
static String ranStr2() {
double d = Math.random();
if(d > 0.66) {
return "가위";
} else if (d > 0.33) {
return "바위";
} else {
return "보";
}
/*
String str;
if( d > 0.66) {
str = "가위";
} else if (d > 0.33) {
str = "바위";
} else {
str = "보";
}
return str;
*/
}
}
➰ 반환 O, 매개변수 O (return O, parameter O)
- 매개변수 여러개 받기 사용.
public class MethodEx02 {
public static void main(String[] args) {
/*
* 매개변수(parameter)
* 1. 매개변수는 메서드를 호출할 때 필요한 값을 전달하는 매개체.
* 2. 매게변수는 몇 개 반들지 메서드를 선언할 때 결정해줍니다.
*/
/*
int sum = 0;
int end = 10;
for(int i = 1; i <= end; i++) {
sum += i;
}
*/
/*메서드를 사용한다면 매번 다른 값을 사용하여 결과값을 뽑아내기 수월하다*/
int result = calSum(10);
System.out.println("1~10까지 합:" + result);
int result2 = calSum(100);
System.out.println("1~100까지 합:" + result2);
int result3 = calSum2(10, 20);
System.out.println("10~20까지 합:" + result3);
}
//반환 O, 매개변수 O (return O, parameter O)
static int calSum(int end) {
int sum = 0;
for(int i = 1; i <= end; i++) {
sum += i;
}
return sum;
}
//반환 O, 매개변수 O (return O, parameter O) - 매개변수가 여러개
static int calSum2(int start, int end) {
int sum = 0;
for(int i = start; i <= end; i++) {
sum += i;
}
return sum;
}
}
➰ 반환 X, 매개변수 O (return X, parameter O) & void형에서 return (종료)
- 리턴이 없음(단순실행) 사용
- void형에서 return 종료용도로 사용.
public class MethodEx03 {
public static void main(String[] args) {
/*
* 반환유형(return type)
* 1. 반환유형은 매서드가 돌려주는 값에 대한 타입.
* 2. 반환유형이 있는 메서드는 호출 구문이 값이 도기 때문에 메서드의 매개값으로 사용될 수 있다.
* ex) println(메서드 호출)
* 3. 모든 메서드는 return을 강제종료 됩니다.
* 4. 리턴문 아래에는 코드를 작성할 수 없습니다. (작성해도 실행안됨)
*/
int result = add(3,5);
System.out.println("결과" + result);
//아래와 같이 사용도 가능하다.
//앞부터 1+2 = 3 & 2+3=5
//3+5 = 8
add(add(1,2), add(2,3));
//반환값이 없기 때문에 아래처럼 변수에 값을 받을 수는 없다.
//int r = sub(1,2);
//이런식으로 호출만 가능하다.
sub(1,2);
noReturn("hello");
}
// 반환 O, 매개변수 O (return O, parameter O)
static int add(int a, int b) {
return a+b;
}
//반환 X, 매개변수 O (return X, parameter O) - 리턴이 없음(단순실행)
static void sub(int a ,int b) {
System.out.println("a-b=" + (a-b));
}
//void형에서 return - 종료
static void noReturn(String s) {
if(s.equals("hello")) {
System.out.println("실행종료");
return;//종료
}
System.out.println(s);
}
}
💡 return의 의미
1. 매서드의 종료
2. 값의 반환
➰ Quiz - 입력받은 두 수의 합을 구하는 코드를 method를 활용하도록 변환해보기
import java.util.Scanner;
public class Quiz21 {
public static void main(String[] args) {
/* 아래 코드를 매서드로 변환해보기*/
/*
//1 - 입력받은 값을 반환시키고(재활용)
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
int b = scan.nextInt();
//2
int result = a+b;
//3
System.out.println("두 수의 합:" + result);
scan.close();
*/
int a = input();
int b = input();
int result = sum(a,b);
print(result);
}
static int input() {
Scanner scan = new Scanner(System.in);
System.out.print("Input>");
int a = scan.nextInt();
return a;
}
static int sum(int a, int b) {
return a+b;
}
static void print(int result) {
System.out.println("두 수의 합:" + result);
}
}
➰ Quiz - 아래에 주어진 조건들로 method만들기

public class Quiz22 {
public static void main(String[] args) {
//method1 - 안녕 출력
method1();
//method2 - 전달받은 매개 변수 리턴
System.out.println(method2("method2 전달받은 매개 변수 리턴"));
//method3 - 세 매개변수 합 리턴
System.out.println(method3(3, 4, 3.14));
//method4 - 홀짝
System.out.println(method4(33));
System.out.println(method4(48));
//method5 - int로 받은만큼 string 반복출력
method5("반복", 5);
//maxNum - 매개변수 2개 중 더 큰수 리턴
System.out.println("더 큰 수는 "+ maxNum(25,78));
//abs
System.out.println("절대값은: " + abs(-342));
System.out.println("절대값은: " + abs(234));
}
static void method1() {
System.out.println("안녕");
}
static String method2(String str) {
return str;
}
static double method3(int a, int b, double c) {
double sum = a + b + c;
return sum;
}
static String method4(int num) {
if(num % 2 == 0) {
return "짝수";
}else {
return "홀수";
}
}
static void method5(String str, int num) {
for(int i = 0; i < num; i++) {
System.out.println(str);
}
}
static int maxNum(int a, int b) {
if(a < b) {
return b;
}else {
return a;
}
//int result = a > b ? a : b;
}
static int abs(int a) {
return Math.abs(a);
/* 위의 근본적인 모형.
if(a < 0) {
return -a;
}
return a;
*/
}
}
➰ Quiz - main과 결과값보고 method 생성하기.

main은 위와 같이 생성하고 아래와 같이 결과값이 나올 때 java method를 생성해보기.

public class Quiz23 {
public static void main(String[] args) {
String str = java(9);
System.out.println(str);
}
static String java(int num) {
String str = "";
for(int i = 1; i <= num; i++) {
if(i % 2 == 0) {
str += "바";
}else {
str += "자";
}
}
return str;
}
}
➰ Quiz - 숫자 n을 받아 n의 약수를 모두 더한 값을 리턴하는 method만들기
public class Quiz24 {
public static void main(String[] args) {
/* 자연수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수를 완성 */
System.out.println(sum(5));
}
static int sum (int num) {
int sum = 0;
for(int i = 1; i <= num; i++) {
if(num % i == 0) {
//System.out.println(i + "는 " + num + "의 약수");
sum += i;
}
}
return sum;
}
}반응형
'국비지원 > JAVA' 카테고리의 다른 글
| [JAVA] 11-2. 객체와 클래스 (0) | 2022.10.05 |
|---|---|
| [JAVA] 11-1. method 이어서 (배열과 method) (0) | 2022.10.05 |
| [JAVA] 9-2. 문자열 다루기 (0) | 2022.09.30 |
| [JAVA] 9-1. 현재까지 배운 것의 활용 Quiz - 고객 정보 관리 프로그램 (0) | 2022.09.30 |
| [JAVA] 8. 배열의 활용 (입력/수정/삭제) (0) | 2022.09.29 |