- [Java] 17. 함수와 메서드2024년 04월 15일
- Song hyun
- 작성자
- 2024.04.15.:30
728x90반응형[Java] 17. 함수와 메서드
1. 함수(fuction)란?
-프로그래밍에서 특정 작업을 수행하는 코드의 집합입니다.
어떠한 값을 주면, 특정 연산을 처리한 뒤 결과를 도출한다. (Input을 넣으면 Output을 리턴하는 것.)
-함수는 코드의 재사용성을 높이고, 프로그램의 구조를 체계적으로 관리할 수 있게 해준다.
-함수=하나의 기능을 수행하는 일련의 코드 묶음.
-구현된 함수는 호출해서 사용하고, 호출된 함수는 기능이 끝나면 실행의 제어가 반환된다.
-함수로 구현된 기능은 여러 곳에서 동일한 방식으로 호출되어 사용할 수 있다. (재사용)
2. How, Why?
-함수는 이름, 파라메터(매개 변수), 반환 값, 함수 몸체(body)로 구성된다.
-함수의 형태: 자료형(리턴값) 함수 이름(매개 변수=파라메터){함수 몸체=바디}
3. 함수 사용하기
-함수의 사용은 모양 맞추기 이다. 똑같은 모양(자료형, 매개 변수의 갯수 등...)을 맞춘다.
-리턴 타입이 있다면, 결과 값을 받아서 사용할 수 있다.
-함수는 함수의 이름을 호출해서 사용할 수 있다.
-함수는 여러번 호출해, 재사용이 가능하다.4. 함수 호출과 JVM 스택 메모리
(1) 스택: 함수가 호출될 때, 지역 변수들이 사용하는 메모리이다.
스택은 함수의 수행이 끝나면, 자동으로 반환된다. (stack 내부에 저장되어있던 데이터가 사라진다.)
(2) 멤버 변수: 클래스 내부에 존재하는 변수 (함수 내부x).
(3) 지역 변수: 함수 내부에 위치하는 변수.함수가 아닌 클래스 내의 변수는 멤버 변수라고 한다. 멤버 변수는 클래스와 관련이 높다.
값 자체를 전달하는 방식(Pass by value)
값의 주소를 전달하는 방식(Pass by reference)
5. 함수와 메서드, 무엇이 다를까?
-> 메소드와 함수의 차이점: 객체와의 관련성
-static-public
-함수는 일련의 코드의 묶음을 말한다.
-메서드는 객체의 기능을 구현하기 위해 클래스 내부에 구현되는 함수를 말한다.
멤버 변수(member function)이라고도 한다. 메서드는 멤버 변수를 활용해, 그 객체에 맞는 기능을 구현한다.
연습 문제 1.
인사말 출력하기
- 함수 이름: greet
- 입력: 이름(String)
- 출력: 없음 (콘솔에 직접 출력)
- 설명: 사용자의 이름을 입력받아 "안녕하세요, [이름]님!"이라고 콘솔에 출력하는 함수입니다.
제곱 계산하기
- 함수 이름: square
- 입력: 정수(int)
- 출력: 입력된 수의 제곱(int)
- 설명: 하나의 정수를 입력받아 그 수의 제곱을 반환하는 함수입니다.
나이 확인
- 함수 이름: checkAdult
- 입력: 나이(int)
- 출력: 성인 여부(Boolean)
- 설명: 입력받은 나이가 18세 이상인지 확인하여 성인이면 true, 아니면 **false**를 반환합니다.
수의 부호 판별
- 함수 이름: signOfNumber
- 입력: 정수(int)
- 출력: 문자열(String) - "positive", "negative", "zero"
- 설명: 입력받은 정수의 부호에 따라 "positive", "negative", "zero" 중 하나를 반환합니다.
최대값 찾기 함수
- 함수 이름: findMax
- 입력: 정수 배열
- 출력: 입력 받은 값 중 가장 큰 수
- 설명: 입력받은 두 수중에서 가장 큰 값을 반환하는 함수를 작성하세요.
풀이 과정:
1. 인삿말 출력하기
-String(문자열) 변수 name을 입력받는 함수 Square를 만든다.
-name을 스크립트 속에 넣어 바로 출력한다.
-반환하지 않아도 되는 함수이므로 void를 반환한다. (값 반환x)
*Scanner 클래스를 사용해 풀어보자.
2. 제곱 계산하기
-int(정수형) 변수 a를 입력받는 함수 square를 만든다.
-변수 a*a를 정수형 변수 times에 할당한다.
-변수 times를 반환한다.
3. 나이 확인하기
-int(정수)형 변수 age를 입력받는 논리형 함수 checkAdult를 만든다.
-논리형 변수 checkAge를 선언한다.
-if문을 통해, 변수 age에 따라 ageCheck에 true/false로 초기화한다.
-return ageCheck를 통해 값을 반환한다.
4. 수의 부호 판별
-int(정수)형 변수 aNum, bNum을 입력받는 정수형 함수 findMax를 만든다.
-정수형 변수 maxNum을 선언한다.
-if-else문을 통해 (aNum>bNum)의 결과에 따라 aNum,bNum 중 하나를 maxNum에 대입한다.
(둘 중 큰 수가 maxNum에 할당된다.)
-return maxNum을 통해 큰 수를 반환한다.
*Max.max 클래스를 통해 둘 중 큰 수를 간편하게 반환할 수 있다.
package basic.ch06; public class Function2 { public static void main(String[] args) { // 1. 인삿말 출력하기 - 테스트 greet("홍길동"); // 2. 제곱 계산하기 - 테스트 int squareTest = square(11); System.out.println(squareTest); // 3. 나이 확인하기 - 테스트 System.out.println(checkAdult(16)); // 4. 수의 부호 판별 - 테스트 System.out.println(signOfNumber(-11)); // 5. 최대값 찾기 함수 - 테스트 int testFindMax = findMax(21, 17); System.out.println(testFindMax); }// end of main // 1. 인삿말 출력하기 static String greet(String name) { System.out.println("안녕하세요," + name + "님!"); return name; } // 2. 제곱 계산하기 static int square(int a) { int times = (a * a); return times; } // 3. 나이 확인하기 static boolean checkAdult(int age) { boolean checkAge; if (age >= 18) { checkAge = true; } else { checkAge = false; } return checkAge; } // 4. 수의 부호 판별 static String signOfNumber(int number) { String answer; if (number > 0) { answer = "Positive"; } else if (number == 0) { answer = "Zero"; } else { answer = "Negative"; } return answer; } // 5. 최대값 찾기 함수 static int findMax(int aNum, int bNum) { int maxNum; if (aNum > bNum) { maxNum = aNum; } else { maxNum = bNum; } maxNum=Math.max(aNum, bNum); return maxNum; } }// end of class
728x90반응형'Java > 기본 개념 및 클래스' 카테고리의 다른 글
[Java] 19. 런타임 데이터 영역 (Run time data Area) (0) 2024.04.15 [Java] 18. 객체 지향, 클래스, 인스턴스화 (0) 2024.04.15 [Java] 16. 이중 for문: 별 그리기 문제 (0) 2024.04.15 [Java] 17. 콘솔에서 입력 받기 : Scanner 클래스 (0) 2024.04.15 [Java] 16. 흐름 제어문 return, break, continue (0) 2024.04.12 다음글이전글이전 글이 없습니다.댓글