728x90
0. 김영한님의 자바 강의 듣는 공부 일지
강의 주소 :
[지금 무료] 김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음 | 김영한 - 인프런
김영한 | 프로그래밍에 처음 입문하는 분들을 위한 자바 강의입니다. 코드를 따라하면서 손쉽게 자바를 배울 수 있습니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 자바 입문[사
www.inflearn.com
1. 메서드
- 메서드 시작
package method; // 패키지 선언
public class Method1 { // 클래스 Method1 시작
public static void main(String[] args) { // main 메서드 시작
//계산1
int a = 1;
int b = 2;
System.out.println(a + "+" + b + "연산 수행");
int sum1 = a + b;
System.out.println("결과1 출력: " + sum1);
//계산2
int x = 10;
int y = 20;
System.out.println(x + "+" + y + "연산 수행");
int sum2 = x + y;
System.out.println("결과1 출력: " + sum2);
} // main 메서드 끝
} // 클래스 Method1 끝
---
1+2연산 수행
결과1 출력: 3
10+20연산 수행
결과1 출력: 30
- 메서드 사용
package method; // 패키지 선언
public class Method1Ref { // 클래스 Method1Ref 시작
public static void main(String[] args) { // main 메서드 시작
int sum1 = add(5, 10);
System.out.println("결과1 출력 = " + sum1);
int sum2 = add(15, 20);
System.out.println("결과2 출력 = " + sum2);
} // main 메서드 끝
//add메서드
public static int add(int a, int b) {
System.out.println(a + "+" + b + "연산 수행");
int sum = a + b;
return sum;
}
} // 클래스 Method1Ref 끝
---
5+10연산 수행
결과1 출력 = 15
15+20연산 수행
결과2 출력 = 35
- 메서드 호출과 용어정리
- 인수
- 매개변수
- 메서드 정의
-제어자
- 반환타입
- 메서드 이름
- 매개변수
- 메서드 본문
- 매개변수가 없거나 반환타입이 없는 경우
// 매개변수가 없고 반환타입이 없는 경우
package method;
public class Method2 {
public static void main(String[] args) { //main 메서드 시작
printHeader();
System.out.println("program on");
printFooter();
}
public static void printHeader() {
System.out.println("program start");
return; //void의 경우 생략 가능
}
public static void printFooter() {
System.out.println("program finish");
}
}
---
program start
program on
program finish
2. 반환 타입
(1) 반환 타입이 있으면 반드시 값을 반환해야 한다.
package method;
public class MethodReturn1 {
public static void main(String[] args) {
boolean result = odd(2);
System.out.println(result);
}
public static boolean odd(int i) {
if (i % 2 == 1) {
return true;
} else { // 조건을 만족하지 않아도 else를 통해 false를 반환하는 return문이 실행됨
return false;
}
}
}
---
false
(2) return 문을 만나면 그 즉시 메서드를 빠져나간다.
package method;
public class MethodReturn2 {
public static void main(String[] args) {
checkAge(10);
checkAge(20);
}
public static void checkAge(int age) {
if (age < 18) {
System.out.println(age + "살, 미성년자는 출입이 불가능합니다.");
return;
}
System.out.println(age + "살, 입장하세요");
}
}
---
10살, 미성년자는 출입이 불가능합니다.
20살, 입장하세요
3. 메서드 호출과 값 전달
자바는 항상 변수의 값을 복사해서 대입한다.
(1) 변수와 값 복사
package method;
public class MethodValue0 {
public static void main(String[] args) {
int num1 = 5;
int num2 = num1;
num2 = 10;
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2);
}
}
---
num1 = 5
num2 = 10
(2) 메서드 호출과 값 복사
package method;
public class MethodValue1 {
public static void main(String[] args) {
int num1 = 5;
System.out.println("1, changeNumber 호출 전, num1: " + num1);
changeNumber(num1);
System.out.println("4, changeNumber 호출 후, num1: " + num1);
}
public static void changeNumber(int num2) {
System.out.println("2. changeNumber 변경 전, num2: " + num2);
num2 = num2 * 2;
System.out.println("3, changeNumber 변경 후, num2: " + num2);
}
}
---
1, changeNumber 호출 전, num1: 5
2. changeNumber 변경 전, num2: 5
3, changeNumber 변경 후, num2: 10
4, changeNumber 호출 후, num1: 5
(3) 메서드 호출과 이름이 같은 변수
// 이름이 같아도 다른 변수
package method;
public class MethodValue2 {
public static void main(String[] args) {
int number = 5;
System.out.println("1, changeNumber 호출 전, number: " + number);
changeNumber(number);
System.out.println("4, changeNumber 호출 후, number: " + number);
}
public static void changeNumber(int number) {
System.out.println("2. changeNumber 변경 전, number: " + number);
number = number * 2;
System.out.println("3, changeNumber 변경 후, number: " + number);
}
}
---
1, changeNumber 호출 전, number: 5
2. changeNumber 변경 전, number: 5
3, changeNumber 변경 후, number: 10
4, changeNumber 호출 후, number: 5
(4) 메서드 호출과 값 반환받기
package method;
public class MethodValue3 {
public static void main(String[] args) {
int num1 = 5;
System.out.println("changeNumber 호출 전, num1: " + num1);
num1 = changeNumber(num1);
System.out.println("changeNumber 호출 후, num1: " + num1);
}
public static int changeNumber(int num2) {
num2 = num2 * 2;
return num2;
}
}
---
changeNumber 호출 전, num1: 5
changeNumber 호출 후, num1: 10
4. 메서드와 형변환
(1) 명시적 형변환
package method;
public class MethodCasting1 {
public static void main(String[] args) {
double number = 1.5;
// printNumber(number);
printNumber((int) number);
}
public static void printNumber(int n) {
System.out.println("숫자 : " + n);
}
}
---
숫자 : 1
(2) 자동 형변환
package method;
public class MethodCasting2 {
public static void main(String[] args) {
int number = 100;
printNumber(number); // int에서 double로 자동 형변환
}
public static void printNumber(double n) {
System.out.println("숫자 : " + n);
}
}
---
숫자 : 100.0
5. 메서드 오버로딩
- 매개변수의 갯수가 다른 오버로딩
package method;
public class MethodOverloading1 {
public static void main(String[] args) {
System.out.println("1: " + add(1, 2));
System.out.println("2: " + add(1, 2, 3));
}
// 첫번째 add 메서드 : 두 정수를 받아서 합을 반환함
public static int add(int a, int b) {
System.out.println("1번 호출");
return a + b;
}
// 두번째 add 메서드 : 세 정수를 받아서 합을 반환함
// 첫번째 메서드와 이름은 같지만, 매개변수 목록이 다르다
public static int add(int a, int b, int c) {
System.out.println("2번 호출");
return a + b + c;
}
}
---
1번 호출
1: 3
2번 호출
2: 6
- 매개변수의 타입이 다른 오버로딩
package method;
public class MethodOverloading2 {
public static void main(String[] args) {
myMethod(1, 1.2);
myMethod(1.2, 2);
}
public static void myMethod(int a, double b) {
System.out.println("int a, double b");
}
public static void myMethod(double a, int b) {
System.out.println("double a, int b");
}
}
---
int a, double b
double a, int b
package method;
public class MethodOverloading3 {
public static void main(String[] args) {
System.out.println("1: " + add(1, 2));
System.out.println("2: " + add(1.2, 1.5));
}
// 첫번째 add 메서드 : 두 정수를 받아서 합을 반환함
public static int add(int a, int b) {
System.out.println("1번 호출");
return a + b;
}
// 두번째 add 메서드 : 세 정수를 받아서 합을 반환함
// 첫번째 메서드와 이름은 같지만, 매개변수 유형이 다르다
public static double add(double a, double b) {
System.out.println("2번 호출");
return a + b;
}
}
---
1번 호출
1: 3
2번 호출
2: 2.7
6. 문제 풀이
7. 정리
<오늘의 단축키>
⭐ 한 줄 복사 (ctl + D)
⭐ psvm (public static void main)
⭐ sout (systemout.println)
728x90
'Computer Language > JAVA' 카테고리의 다른 글
[240615] Array (0) | 2024.06.15 |
---|---|
[240614] Scanner (0) | 2024.06.14 |
[240614] Scope & Casting (0) | 2024.06.14 |
[240614] Loop (1) | 2024.06.14 |
[240611] Conditional Statements (0) | 2024.06.14 |