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

+ Recent posts