| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- @RequestParam
- @ResponseBody
- @
- 의존주입
- 생성자주입
- @Valid
- 바인딩변수
- AOP
- Java
- produces
- Model
- spring
- PointCut
- 어노테이션
- 유효성검사
- c:if
- .xml
- gradle
- MVC
- SpringBoot
- @RequestMapping
- 비즈니스레이어
- application.properties
- after-throwing
- frontController
- jointpoint
- springmvc
- 스프링
- 서비스레이어
- springjdbc
- Today
- Total
메모장
함수 (메서드) 본문
[함수]
<메서드 시그니처 >
함수 3요소 (모두 가져야 함수로 인정)
1) input,인자, 입력값, 파라미터, args, 매개변수,인수
2) output, 반환,return, 결과값
3) 기능
함수 A) input x output x 입력, 반환값 둘다 없을때
// 함수 A유형
public static void hello() {// 함수명은 "기능"을 유추할수 있게 만들어야 한다!
System.out.println("안녕하세요 ! ");
}
// "함수를 정의(선언) 했다."
함수 B) input o output x 입력값만 있을때
// 함수 B유형
public static void printStar(int num) {// 정수 넘버를 받으면 별을 찍어준다.
for (int i = 0; i < num; i++) {
System.out.println("★");
}
}
함수 C) input x output o 반환값만 있을때
// 함수 유형 C
System.out.println("funcC() 동작!");
return "apple"; // 함수 즉시 종료됨!!!!!
///// System.out.println("funcC()의 마지막 코드");
}
함수 D) input o output o 입력값, 반환값 둘다 있을때
<절대값 반환>
public static int abs(int num) {
if(num < 0) {
num *= (-1);
}
return num;
}
반복문 vs 함수
반복문 -> 공백없이(외부의 다른 수행없이) 여러번
-> 외부 다른 수행중에 또 특정 기능을 수행하고 싶을때
둘의 공통점 : 어쨌든 "코드를 재사용 할 수 있게 해줌"
:오류의 파급효과 절감
:개발시간 , 비용 단축
: 이익 증가
: 유지보수 용이
★ run 버튼을 누르면, main()함수가 실행 !
class
1. 함수끼리는 메모리 공간을 공유하지 x
2. 전위 증감연산자 >> 함수호출 >> 후위증감연산자
3. 함수를 호출할때에는 "값(value)" 을 전달함
"변수,주소" 를 전달 xxxx
" call by value" (값에 의한 호출)
예시문제로 설명 !
public static void func(int a) {
a=100;
System.out.println("func()입니다. a= "+a);
}
public static void main(String[] args) {
int a=10;
System.out.println("a= "+a);
func(a);
System.out.println("a= "+a);
func(++a);
System.out.println("a= "+a);
}
출력해봤을때 콘솔 창에는 어떻게 나올까요 ??
사진 설명을 입력하세요.
func() 함수는 제 기능이 다 끝나면 사라진다.
println() 을 출력해주고 기능이 끝나면 사라진다.
마지막은 전위형 증감식이 들어가서 main에 있는 a가 1 올라간다.
따라서 마지막 a = 11 이 나온다.
[연습문제]
학생들의 점수에 따라 등급을 나누어 주기 !
출처 입력
1. 점수를 알려주면 input
public static void printGrade(int score){
}
2. " ㅁㅁ점은 ㅁ 등급입니다" 라고 출력
3. 80~100 A
60~79 B (기능)
0~59 C
public static void printGrade(int score){
if(){
syso(ㅁㅁ"점은"ㅁㅁ "등급입니다"
}
4. printGrade() 라는 함수를 선언(정의) 해주세요
함수
5. 반환해줘야 하는 자료형에 따라 반환 하기
<정답>
public static void printGrade(int score) {
if(score<0 || 100<score) { // 유효성 검사도 진행 !
System.out.println("점수가 유효하지않습니다! 확인이 필요합니다!");
return; // 함수를 즉시종료하겠습니다. // 여기서 멈춤
}
char grade='C'; // 나머지 점수의 등급을 기본값을 C로 맞춤
if(80<=score) { // 점수가 80이상이면
grade='A'; // 등급이 A이다
}
else if(60<=score) {// 점수가 60이상이면
grade='B'; // 등급이 B이다
}
System.out.println(score+"점은 "+grade+"등급입니다.");}
// ㅁㅁ 점은 ㅁㅁ 등급이다 !
연습문제2) a유형
1. test1()라는 함수가 있음
2. 랜덤정수를 생성해내고(범위 10~20)
3. 1부터 랜덤수까지의 총합을 출력하는 기능을 가졌습니다.
// 함수명 :test1()
// input : 정수
// 기능 : 랜덤정수 생성 , 1부터 랜덤수까지의 총합을 출력
public static void test1() { // "메서드 시그니처"
Random rand = new Random();
int num = (rand.nextInt(10)+1) + 10;
int result = 0;
for (int i = 0; i < num; i++) {
result += i;
}
System.out.println("총합은: " + result);}
연습문제3) d유형
1. test2()라는 함수가 있음
2. 정수를 입력받으면
3. 1부터 정수까지중에서 짝수가 몇개인지를 반환해주는 기능을 가졌습니다.
// 함수명 :test2()
// input : 정수
// 기능 : 1부터 정수까지중에서 짝수가 몇개인지를 반환
// output : 정수 라서 int
// 반환 ! 이라는 표현이 들어갔으므로 return 도 써줘야 한다.
public static int test2(int num) {
int count = 0;
for (int i = 0; i < num; i++) {
if(num % 2 == 0) {
count++; }
}
return count;
}
연습문제4) d유형
1. test3()이라는 함수가 있음
2. 정수를 입력받으면
3. 입력받은 정수가 10보다 크면 "apple",
10이하면 "banana"를 반환하는 기능을 가졌습니다.
// 함수명 :test3()
// input : 정수
// 기능 : 입력받은 정수가 10보다 크면 "apple",
10이하면 "banana"를 반환
// output : 반환되는 값이 문자열 이므로 문자열 !
// 반환! 이라고 써있었으므로 return 값도 있어야함
public static String test3(int num) {
String msg = "banana";
if(num >10) {
msg = "apple";}
return msg;
}
input 은 여러개 가능하다 !
그러나 output은 없거나 하나 이다 !
// [ 오버로딩 ]
// : 기능이 같은 함수
// : 메서드 시그니처가 다른경우에는
// -> 인자의 개수, 자료형이 다른경우에는
// : 함수명 중복정의를 허용
public static int plus(int a,int b) {
return a+b;
}
public static int plus(int a,int b,int c) {
return a+b+c;
}
public static double plus(double a,double b) {
return a+b;
}
public static double plus(double a,double b,double c) {
return a+b+c;
}
public static void main(String[] args) {
int res=plus(1,2);
double res2=plus(3.1,2.3);
// 오버로딩의 대표예시
System.out.println(100); // 정수의 값을 출력 할수도 있고
System.out.println("apple"); // 문자열 값을 출력할수도 있다.
// System.out.print();
// 오버로딩이 되어있지않다!
// 함수정의가 안되어있다!
System.out.println();
'JAVA > 개념정리' 카테고리의 다른 글
| Scanner (0) | 2024.04.06 |
|---|---|
| 반복문 (for문) (0) | 2024.04.06 |
| 반복문 (while문) (0) | 2024.04.06 |
| 배열 (0) | 2024.04.06 |
| 변수 , 연산자 (0) | 2024.04.06 |