/*
* 메서드 ( method )
* → class 안에 하나의 기능을 가진 작은 프로그램.
*/
public class MethodEx01 {
// 접근제한자 지정예약어 반환타입 메서드명 매개변수
// 선택 선택 필수 필수 선택
public static void main( String[] args) {
// 반환타입 : 메서드의 실행이 종료되면서 호출부로 돌아갈 때 보내지는 값의 자료형.
// 기본 자료형, 참조 자료형, void( 반환값 X )
// 호출 요청한 곳에서 return값 수신.
// 부른 메서드에서 코드가 작동되고, 결과값을 반환. ! 반드시 참조변수에 저장해야 데이터 사용가능. !
// 메서드명 : 매서드 실행(호출)시에 사용되는 이름.
// 매개변수 : 호출부에서 보내지는 값을 보관하는 변수. (사용할 때도 있고, 안할 때도 있음.)
// 메서드 호출 : 메서드 명을 사용해서 실행.
// → 메서드명( 인자값 );
// > 메서드 정의부에 매개변수가 있으면, 메서드 호출시에 해당 타입에 맞는 값을 보내야 함.
hi();
hi();
dataSend(10);
System.out.println( "원주율 : " + returnPi() );
double pi = returnPi();
System.out.println("pi : "+ pi);
// 메서드 지역이 다르면 동일한 문자사용가능.
// sendReceive(str); → sendReceive에 있는 str이 "종료"로 바뀌는 거라 출력도 시작으로 됌.
// str = sendReceive(str); → "종료"
String str = "시작";
str = sendReceive(str);
System.out.println("str : " + str);
}
public static String sendReceive(String str) {
System.out.println("받은 문자열 : " + str);
str = "종료";
return str;
}
// return : 메서드 실행에서 나온 결과물을 호출부로 보낼 때 사용.
// → 반환 값을 한 개만 가능.
public static double returnPi() {
return 3.141592;
}
public static void dataSend(int parameter) {
System.out.println("받은 데이터 : " + parameter);
}
// 매서드 정의 : 매서드 호출시에 실행하는 기능 구현.
public static void hi() {
System.out.println("Hello World!");
}
}
import java.util.Scanner;
public class MethodEx02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// sc = Scanner class의 주소
int data = inputInt(sc);
System.out.println("data : " + data);
sc.close();
} // main()
// Scanner 변수 값일 때 동일한 변수타입으로 받아야 함.
public static int inputInt(Scanner sc) {
System.out.print("데이터 입력 > ");
int data = sc.nextInt();
return data;
}
}
public class MethodEx03 {
public static void main(String[] args) {
int[] arr = new int[3];
lifeTestA();
// 출력 arr[0] : 0 → main의 arr과 lifeTestA의 arr은 다른 배열이므로, 0값 출력.
System.out.println("arr[0] : " + arr[0]);
// lifeTestB의 arr → main의 arr
lifeTestB(arr);
System.out.println("arr[0] : " + arr[0]);
arr = lifeTestC();
System.out.println("arr[0] : " + arr[0]);
}
// int[] int배열의 위치값(주소값)
public static int[] lifeTestC() {
return new int[3];
}
public static void lifeTestB(int[] arr) {
arr[0] = 7;
}
public static void lifeTestA() {
int[] arr = new int[3];
arr[0] = 10;
}
}
import java.util.Scanner;
public class MethodEx04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char subject = inputSubject("Java : j, Python : p 선택 >> ", sc);
if( checkSubject(subject) ) {
System.out.println("열심히 하세요.");
}
sc.close();
}
public static char inputSubject(String menu, Scanner sc) {
System.out.print(menu);
char value = sc.next().charAt(0);
return value;
}
// 메서드 실행 중 'return'문이 실행되면, 해당 위치에서 메서드의 실행을 멈추고 호출부로 돌아감.
// 메서드 안에서 'return'문은 몇 번이든 사용할 수 있으나, 여러번 사용시 모든 경우의 수에서 return값을 써야함.
public static boolean checkSubject(char subject) {
switch(subject) {
case 'j':
System.out.println("Java를 선택하셨습니다.");
//break;
// return; → 실행을 멈추고 호출부로 돌아감.
return true; // → void가 아닌 boolean 반환타입이 정해져 있을 때, 모든 상황에서 return값을 써야함.
case 'p':
System.out.println("Python을 선택하셨습니다.");
//break;
// return; → 여러번 사용 가능.
return true; // → void가 아닌 boolean 반환타입이 정해져 있을 때, 모든 상황에서 return값을 써야함.
}
System.out.println("--end--");
return false; // → void가 아닌 boolean 반환타입이 정해져 있을 때, 모든 상황에서 return값을 써야함.
}
}
QuizMethod