『메서드』
어떤 클래스 내에서 특정 기능을 하는 함수
Scanner 내의 NextInt등
메서드는 패러미터(매개변수)를 받아 반환을 위해 클래스 내에 선언하는 하나의 기능 함수이다.
예를들어 equlas는 받아온 매개변수 [스트링] 을 통해
반환값을 boolean 으로 변환해 true 혹은 false를 출력한다.
쉽게 설명하면 nextInt(); 처럼 소괄호가 붙는 것들을 대부분 메서드라 부른다.
함수
입력값(매개변수) => 함수 => 결과값(반환값)
『 메서드의 사용 이유 』
객체의 행위를 표현
반복적으로 사용되는 코드 최소화
작업을 수행하기 위해 명령문을 집합
public class ex01 {
public static void main(String[] args) {
int bb = addNumber(1,2); // 호출한 메서드 addNumber에 대한 결과를 저장할 변수를 선언하거나
System.out.println(bb);
System.out.println(addNumber(2,4)); // 출력문에 직접 메서드를 표기
}
public static int addNumber(int num1, int num2)
{
return num1+num2; // addNumber 메서드의 결과를 반환
}
}
가장 기본적인 메서드의 생성 및 사용 예제이다.
여기서 호출된 메서드 addNumber는 num1과 num2 매개변수의 합산값을 반환한다.
※ 메서드는 호출하지 않으면 실행되지 않는다.
public class ex02 {
public static void main(String[] args) {//void는 반환하지 않겠단 의미임..
studentInfo("Kal", 43, 1);
}
public static void studentInfo(String name, int age, int grade) {//void는 반환하지 않겠단 의미임.., 따라서 출력 후 종료하겠단 것..
System.out.println("name :" +name);
System.out.println("age :" +age);
System.out.println("grade :"+grade);
//함수의 흐름 메인 -> studentInfo 를 호출받아 이름,나이,학년을 입력받고 studentInfo에서 동작.
}
//학생의 정보를 입력한 후 출력하는 StudentInfo메서드 설계 , 이름,, 나이 ,학년등..
}
다음과 같이 메인이 메서드에서 입력값을 입력받고
메서드에서 출력을 담당하도록 설계할 수도 있다.
import java.util.Scanner;
public class ex04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num1 = 50;
int num2 = 15;
char op = '-';
System.out.println(cal(num1, num2, op));
}
public static int cal(int num1, int num2, char op) {
int od = 0;
if (op == '+') {
od = num1 + num2;
} else if (op == '-')
{
od = num1 - num2;
} else if (op == '*')
{
od = num1 * num2;
} else if (op == '/')
{
od = num1 / num2;
}
return od;
}
}
정수 2개와 연산자를 초기화하고
메서드를 호출해 해당 메서드가 정수 2개 및 연산자에 따라 결과값 od를 반환하는 것으로
od는 cal 메서드 안에서 사용되는 변수로, 입력받은 cal 메서드의 값에 대한 반환 결과값이다.
자료형은 int 를 반환하였으니 void 가 아닌 int를 사용한다.
case문 등을 사용하면 break; 문이 사용 되는데
Return은 함수의 종료를 의미하기 때문에, 그 뒤에 break문 등이 나올 수 없고
변수등을 만들어 초기화하고 케이스 안에서 사용하며, 메서드의 맨 마지막에 반환 시켜 사용할 수 있다.
public class ex05 {
public static void main(String[] args) {
int a = 30;
int b = 40;
System.out.println(largerNumbers(a, b));
}
public static int largerNumbers(int a, int b) {
int over = 0;
if (a > b) {
return a;
}
else if (a < b) {
return b;
}
else {
return 0;
}
}
}
입력 받은 (정의된 a, b ) 를 반환값으로 그대로 반환하는 경우.
public class ex06 {
public static void main(String[] args) {
int a = 17;
int b = 14;
System.out.println(close10(a,b));
}
public static int close10(int a, int b)
{
if (10 - Math.abs(a) > 10 - Math.abs(b))
{
return a;
}
else if ( 10 - Math.abs(a) < 10 - Math.abs(b) )
{
return b;
}
else { return 0;}
}
}
입력받은 두 정수 중 10에 가까운수를 출력하는 메서드이다.
절댓값을 구하기 위해 Math 클래스의 abs 메서드를 활용하였다.
10 - math.abs(a) 와 같이 사용하여도 되며, 보편적으로 사용할 경우 Math.abs(10-a) 와 같이 쓸 수도 있다.
public class ex08 {
public static void main(String[] args) {
//int[] arr2 = new int[]
int a = 56;
divisior(a);
divisior(65537);
}
public static void divisior(int a) {
for (int i = 1; i <= a; i++) {
if (a % i == 0) {
System.out.printf("%d ", i);
}
}
System.out.println();
}
}
입력받은 a에 대한 약수를 출력하는 메서드를 생성하였다.
public class ex09 {
public static void main(String[] args) {
//int[] arr2 = new int[]
int a = 10;
int b = 15;
divisior(a, b);
}
public static void divisior(int a, int b) {
for (int j = a; j <= b; j++) {
System.out.printf("%d 의 약수 :", j);
for (int i = 1; i <= j; i++) {
if (j % i == 0) {
System.out.printf("%d ", i);
}
}
System.out.println();
}
}
}
입력받은 두 정수 범위 까지의 약수를 구하는 메서드를 생성하였다.
'Language > Java 기본' 카테고리의 다른 글
클래스와 객체 (0) | 2021.01.07 |
---|---|
객체 지향프로그래밍 (Object Oriented Programming) (0) | 2021.01.07 |
배열의 사용 (0) | 2021.01.05 |
do ~ While 문 (0) | 2021.01.04 |
for문의 응용 (0) | 2021.01.04 |