
📅2023. 12. 14 6일차
static int 합(int a, int b) {
System.out.println(a + b);
return 10;
static --> 선언부
int --> return type
합 --> 이름
(int a, int b) --> 매개변수
system... --> 구현부 (method body)
return --> return statement
10; --> retrun value
- return type, return value
- return type은 메서드가 실행한 후 메서드를 호출한 곳에 반환하는 값의 데이터 타입을 말한다.
- 메서드의 반환값이 없는 경우에는 void를 작성해줘여한다.
- 반환값이 있는 메서드를 호출 시에는 해당 반환유형에 맞는 변수에 반환값 저장 필수
- 메서드가 실행의 결과값을 반환할 때는 return이라는 키워드를 사용한다.
| 유형 | 매개변수 | 반환 값 |
|---|---|---|
| 유형1 | 매개변수 있고 = 전달인자(O) | 반환 값 있다. = 반환 값(O) |
| 유형2 | 매개변수 있고 = 전달인자(O) | 반환 값 없다. = 반환 값(X) |
| 유형3 | 매개변수 없고 = 전달인자(X) | 반환 값 있다. = 반환 값(O) |
| 유형4 | 매개변수 없고 = 전달인자(X) | 반환 값 없다. = 반환 값(O) |
public class Test {
public int sum(int a, int b) {
return a+b;
}
public static void main(String[] args) {
int a = 3;
int b = 4;
Test myTest = new Test();
int c = myTest.sum(a, b);
System.out.println(c);
}
}
sum메소드는 입력값으로 두개의 값(int 자료형 a, b)을 받아 리턴 값은 두 개의 입력 값을 더한 값(int 자료형)이다.
여기서 return은 메소드의 결과 값을 돌려주는 명령어이다.
sum 메소드에 3, 4 입력값을 전달하여 7을 리턴받는다.
class GetMax{
public static void main(String[] args){
int a = 5;
int b = 3;
int result = max(a,b);
System.out.println(result);
}
static int max(int a, int b){
if(a > b){
return a;
}
}
}
a 의 값인 5가 나올것으로 기대하고 컴파일을 해보면 아래와 같이 missing return statement 오류가 난다.
문제는 b가 클 경우에 return 문이 선언 되어있지 않음에 있다.
a 가 b 보다 크니 a가 큰 경우만 return문을 작성하고 결과값이 나오도록 기대하였지만,
java 컴파일러는 모든 경우수를 고려해야한다.
그러므로 모든 경우에 대한 return 값을 가지도록 해야한다.
- 컴퓨터 프로그램을 어떤 데이터를 입력받아 순서대로 처리하고 결과를 도출하는 명령어들의 목록으로 보는 시각에서 벗어나 여러 독립적인 부품들의 조합, 즉 객체들의 유기적인 협력과 결합으로 파악하고자 하는 컴퓨터 프로그래밍의 패러다임을 의미한다.
- 객체 지향적 설계를 통해서 프로그램을 보다 유연하고 변경이 용이하게 만들 수 있다는 점이다.
- 코드의 변경을 최소화하고 유지보수를 하는 데 유리하다.
- 코드의 재사용을 통해 반복적인 코드를 최소화하고, 코드를 최대한 간결하게 표현할 수 있다.
- 추상화
- 상속
- 다형성
- 캡슐화
- 객체 지향 프로그래밍에서 의미하는 추상화는 객체의 공통적인 속성과 기능을 추출하여 정의하는것을 의미한다.
- 상속이란 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법 요소를 의미한다.
- 다형성(多形性)이란 한자 이름 그대로 어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질을 의미한다.
- 캡슐화란 클래스 안에 서로 연관있는 속성과 기능들을 하나의 캡슐(capsule)로 만들어 데이터를 외부로부터 보호하는 것을 말한다.
- 문제 : 매개변수를 사용해서 문제를 풀어주세요.
class Main {
public static void main(String[] args) {
계산기.더한결과를_화면에_출력(10, 20);
// 출력 => 결과 : 30
계산기.더한결과를_화면에_출력(50, 20);
// 출력 => 결과 : 70
계산기.뺀결과를_화면에_출력(50, 20);
// 출력 => 결과 : 30
계산기.뺀결과를_화면에_출력(5, 2);
// 출력 => 결과 : 3
계산기.곱한결과를_화면에_출력(5, 2);
// 출력 => 결과 : 10
}
}
class 계산기 {
static void 더한결과를_화면에_출력(int a, int b) {
System.out.printf("결과 : %d\n", a + b);
}
static void 뺀결과를_화면에_출력(int a, int b) {
System.out.printf("결과 : %d\n", a - b);
}
static void 곱한결과를_화면에_출력(int a, int b) {
System.out.printf("결과 : %d\n", a * b);
}
}
- 문제 : 함수를 실행하면 값을 돌려주도록 만들어주세요.
class Main {
public static void main(String[] args) {
int 결과;
결과 = 계산기.합(10, 20);
System.out.println("결과 : " + 결과);
// 출력 => 결과 : 30
결과 = 계산기.합(30, 20);
System.out.println("결과 : " + 결과);
// 출력 => 결과 : 50
결과 = 계산기.합(30, 70);
System.out.println("결과 : " + 결과);
// 출력 => 결과 : 100
결과 = 계산기.차(30, 70);
System.out.println("결과 : " + 결과);
// 출력 => 결과 : -40
결과 = 계산기.곱(3, 7);
System.out.println("결과 : " + 결과);
// 출력 => 결과 : 21
}
}
class 계산기 {
static int 합(int a, int b) {
return a + b;
}
static int 차(int a, int b) {
return a - b;
}
static int 곱(int a, int b) {
return a * b;
}
}
- 문제 : 아래와 같이 출력 되도록 해주세요.
class Main {
public static void main(String[] args) {
// 예시 시작
int c = 20 + Math.더하기(10, 20);
System.out.println(c);
// 예시 끝
int 결과1 = Math.one_To_n_Sum(3);
System.out.println("결과1 : " + 결과1);
// 출력 : 결과1 : 6
int 결과2 = Math.one_To_n_Sum(10);
System.out.println("결과2 : " + 결과2);
// 출력 : 결과2 : 55
}
}
class Math {
// static => 본사직원
// static은 현재 클래스에 지금당장 존재한다.
static int 더하기(int a, int b) {
// 메인 메서드의 int c와 아래 int c는 전혀 관계가 없다.
int c = a + b;
// return 값의 타입과 함수명의 앞부분이 같아야 한다.
// return => 변신
return c;
}
static int one_To_n_Sum(int n) {
int result = 0;
for(int i = 1 ; i <= n; i++) {
result += i;
}
return result;
}
- 문제 : 아래와 같이 출력 되도록 해주세요.
class Main {
public static void main(String[] args) {
int 결과1 = Math.n_To_M_Sum(2, 3);
System.out.println("결과1 : " + 결과1);
// 출력 : 결과1 : 5
int 결과2 = Math.n_To_M_Sum(5, 10);
System.out.println("결과2 : " + 결과2);
// 출력 : 결과2 : 45
}
}
class Math {
static int n_To_M_Sum(int n, int m) {
int result = 0;
for(;n <= m; n++) {
result += n;
}
return result;
}
}
- 메서드, 인자, 매개변수, 리턴
- 함수 리턴 해설
- 함수 문제 풀이
return 개념 반복 숙달 해야되겠다.. 어렵다... 쉬운 것 같은데 활용이 잘 안되는 것 같다. 계산기 예시 문제로 다시 복습해보고 자야겠다...