매서드 ( Method )
- 메서드는 반복되는 코드 블록에 이름을 붙여 놓은 것이다.
- 메서드는 반복되는 코드를 줄여주고, 좀 더 구조화시켜 우리가 코드를 알아보기 쉽게 한다.
- 객체지향프로그래밍에서 메서드는 ' 객체가 가져야할 기능을 구현하기 위해 만든다 '라고 표현하기도 한다.
- 메서드의 이름 뒤에는 반드시 소괄호 ' ( ) '가 따른다.
public class Main {
public static void main(String[] args) {
System.out.println(calc());
System.out.println(randomStr());
}
static int calc() {
int sum=0;
for(int i=0; i<=10; i++) {
sum += i;
}
return sum;
}
static String randomStr() {
double a = Math.random();
String str = "";
if(a > 0.66) {
str = "가";
}else if(a > 0.33) {
str = "나";
}else {
str = "다";
}
return str;
}
}
매개변수 ( Parameter )
- 매개 변수는 메서드가 실행될 때 필요한 데이터를 외부로부터 받기 위해 사용된다.
- 매개 변수도 일종의 변수이기에 메서드의 소괄호() 부분에 데이터 타입과 함께 선언해야 하며 초기화는 하지 않는다.
- 매개 변수를 여러개 선언할 수 있다.
- 메서드가 외부로부터 받을 데이터가 없다면 선언하지 않을 수도 있습니다.
- 이때는 반환 유형을 적을때와 같이 void를 쓰지 않고 소괄호() 안을 비워둬야 합니다.
public class Main {
public static void main(String[] args) {
// 매개변수는 메서드가 전달받는 필요한 값
int b = calc(10);
System.out.println(b);
}
static int calc(int a) {
int sum = 0;
for(int i=1; i<=a; i++) {
sum += i;
}
return sum;
}
}
public class Main {
public static void main(String[] args) {
int b = calc(5, 10);
System.out.println(b);
}
static int calc(int a, int b) {
int sum = 0;
for(int i=a; i<=b; i++) {
sum += i;
}
return sum;
}
public class Main {
public static void main(String[] args) {
String d = calc4(1,10,"a");
System.out.println(d);
}
static String calc4(int a, int b, String c) {
String aa = "";
for(int i=a; i<=b; i++) {
aa += c;
}
return aa;
}
}
반환유형 ( Return Type )
- 반환 유형은 메서드가 실행한 후 메서드를 호출한 곳에 반환하는 값의 데이터 타입을 말한다.
- 메서드는 반환값이 있을 수도 있고 없을 수도 있는데 없는 경우에는 반환 유형에 void를 적어줘야 한다.
- 반환값이 있는 메서드를 호출할 때는 해당 반환 유형에 맞는 변수에 반환값을 저장해야 한다.
- 메서드가 실행의 결과값을 반환할 때는 return이라는 키워드를 사용한다.
- return 값이 있는 메서드는 호출문 자체가 값이 되는 경우도 있다. ( 다른 메서드의 매개값으로 사용 가능 )
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
int result = add(3,6);
System.out.println(result);
}
static int add(int a, int b) {
return a+b;
}
}
- 반환유형이 없는 메서드는 반환유형 자리에 void 라고 적는다.
- return 키워드는 반환과 종료의 의미를 가진다.
- void 메서드에서 return은 단순히 종료의 의미를 가진다.
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
noReturn("피카츄");
}
static void noReturn(String name) {
if(name.equals("피카츄")) {
System.out.println("피카피카!!!!!!!!!!!!!!!!!카카카카카!!!");
}
System.out.println(name + " 이 아니라 피카츄를 전달하세요.");
}
}
위와 같이 return을 사용하지 않으면 원하는 조건에 맞아도 전부 출력하게 된다.
아래는 return을 사용하여 종료한 경우이다. ( 단, return 내부에 코드 작성은 불가하다. )
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
noReturn("피카츄");
}
static void noReturn(String name) {
if(name.equals("피카츄")) {
System.out.println("피카피카!!!!!!!!!!!!!!!!!카카카카카!!!");
return;
}
System.out.println(name + " 이 아니라 피카츄를 전달하세요.");
}
}
예제
public class Main {
public static void main(String[] args) {
System.out.println("첫 번째 줄 ===============");
String q1 = method1();
System.out.println(q1);
System.out.println("두 번째 줄 ===============");
String q2 = method2("피카");
System.out.println(q2);
System.out.println("세 번째 줄 ===============");
double q3 = method3(1 , 2 , 3.7);
System.out.println(q3);
System.out.println("네 번째 줄 ===============");
String q4 = method4(5);
System.out.println(q4);
System.out.println("다섯 번째 줄 ===============");
String q5 = method5("a " , 10);
System.out.println(q5);
System.out.println("여섯 번째 줄 ===============");
long q6 = method6(10, 10000);
System.out.println(q6);
System.out.println("일곱 번째 줄 ===============");
int q7 = method7(-10023);
System.out.println(q7);
}
// 문자를 그대로 출력하는 메서드
static String method1() {
return "안녕";
}
// 전달받은 값을 그대로 출력하는 메서드
static String method2(String a) {
return a;
}
// 세 매개변수의 합을 구하는 메서드
static double method3(int a, int b, double c) {
return a+b+c;
}
// 매개변수가 짝수/홀수인지 확인하는 메서드
static String method4(int a) {
if(a % 2 == 0) {
return "짝수";
}else {
return "홀수";
}
}
// 문자열을 반복해서 출력하는 메서드
static String method5(String a, int b) {
String sum = "";
for(int i=0; i<=b; i++) {
sum += a;
}
return sum;
}
// 두 수를 비교하는 메서드
static long method6(long a, long b) {
if(a>b) {
return a;
}else {
return b;
}
}
// 음수를 양수로, 양수는 그대로 출력하는 메서드
static int method7(int a) {
if(a<0) {
return -a;
}else {
return a;
}
}
}
예제 - 여러가지 메서드들의 결합
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 두 수를 입력받아서 두 수의 합을 구하는 메서드
// 메서드 내부에서 입력ㅂ다아 리턴하는 메서드
// add 두 수의 합을 더해서 결과를 리턴하는 메서드
// 결과를 받아서 출력하는 메서드
print();
int b = input();
int c = input();
int d = add(b,c);
result(d);
}
// 문자열 출력하는 메서드
static void print() {
System.out.println("두 정수를 입력하세요");
}
// 값을 입력받는 메서드
static int input() {
Scanner sc = new Scanner(System.in);
System.out.print("> ");
int a = sc.nextInt();
return a;
}
// 입력받은 값을 계산하는 메서드
static int add(int a, int b) {
return a+b;
}
// 계산된 결과를 반환하는 메서드
static void result(int a) {
System.out.println("두 수의 합 : " + a);
}
}
매개변수 n을 받아서, n까지 약수의 합을 리턴하는 문제
static int test(int n) {
int sum = 0;
for(int i=1; i<=n; i++) {
if(n%i==0) {
sum += i;
}
}
return sum;
}
두 수를 매개변수로 받아서, 두 수사이의 합을 구하는 문제
static int add(int a, int b) {
int sum2 = 0;
if(a>b) {
for(int i=b; i<=a; i++) {
sum2 += i;
}
return sum2;
}else if(b>a) {
for(int i=a; i<=b; i++) {
sum2 += i;
}
return sum2;
}else {
return 0;
}
}
매개변수를 입력받아, "자바"의 단어를 1이면 자 / 2이면 자바 / 3이면 자바자 순으로 출력하는 문제
static int input() {
Scanner sc = new Scanner(System.in);
System.out.print("입력 정수를 입력하세요 : ");
int a = sc.nextInt();
return a;
}
static String ja(int b) {
String jas = "자바";
String sum = "";
for(int i=1; i<=b; i++) {
char a = jas.charAt(1);
char c = jas.charAt(0);
if(i % 2 == 0) {
sum += a;
}else {
sum += c;
}
}
return sum;
}
728x90
'Programming > Java' 카테고리의 다른 글
[JAVA] 객체와 클래스 (0) | 2023.11.08 |
---|---|
[JAVA] 스택(Stack)과 큐(Queue) (0) | 2023.11.07 |
[JAVA] 2차원 배열 (0) | 2023.11.03 |
[JAVA] 배열을 이용한 문제풀이 (2) | 2023.11.03 |
[JAVA] 정렬과 복사 (0) | 2023.11.02 |