[Programmers 백엔드 데브코스]2일차 , 자바 자료형 메모리 등등

📌 Java의 함수(Function), 메서드(Method), 오버로딩(Overloading), 람다 표현식(Lambda Expression), 제어문(Control Flow Statement) 깊이 있게 이해하기

이 문서에서는 Java 프로그래밍 언어의 함수와 메서드, 오버로딩, 람다 표현식, 제어문에 대해 상세히 설명합니다. 각 개념의 정의와 동작 원리를 살펴보고, 구체적인 예제 코드를 통해 이해를 돕겠습니다. 또한 개념별 활용 사례와 장단점을 알아보고, 함수와 메서드의 차이점을 명확히 비교해보겠습니다.


🔸 함수(Function)

함수는 특정 작업을 수행하거나 값을 계산하는 독립적인 코드 블록입니다. 함수를 사용하면 반복되는 코드 작성을 피하고 코드의 재사용성과 유지보수성을 높일 수 있습니다.

Java에서는 엄밀히 말해 함수가 존재하지 않으며, 모든 것은 클래스 내에 정의된 메서드 형태로 존재합니다. 그러나 static 메서드를 사용하면 객체 없이도 독립적인 함수처럼 호출할 수 있습니다.

✅ 예제 코드

1
2
3
4
5
6
7
8
9
10
11
12
public class Util {
    public static int add(int x, int y) {
        return x + y;
    }
}

public class Main {
    public static void main(String[] args) {
        int result = Util.add(5, 3);
        System.out.println("결과: " + result); // 출력: 결과: 8
    }
}

🔸 메서드(Method)

메서드는 객체의 상태를 변경하거나 객체 정보를 처리하는 기능을 제공하는 코드 블록으로, 클래스 내부에 정의됩니다.

✅ 예제 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Counter {
    private int count = 0;

    public void increment() {
        count++;
    }

    public int getCount() {
        return count;
    }
}

public class Main {
    public static void main(String[] args) {
        Counter cnt = new Counter();
        cnt.increment();
        cnt.increment();
        System.out.println(cnt.getCount()); // 출력: 2
    }
}

🔸 함수와 메서드의 차이점

구분 함수 메서드
소속 여부 독립적 클래스나 객체에 속함
호출 방법 이름만으로 호출 객체 인스턴스나 클래스 이름으로 호출
데이터 접근 주어진 인자 사용 객체의 상태(필드)에 접근 가능
사용 범위 절차지향적 프로그래밍 객체 지향 프로그래밍

🔸 오버로딩(Overloading)

오버로딩은 같은 이름의 메서드를 다양한 매개변수 형태로 정의하여 코드의 유연성을 높이는 기법입니다.

✅ 예제 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Calc {
    public int sum(int a, int b) {
        return a + b;
    }

    public double sum(double a, double b) {
        return a + b;
    }

    public int sum(int a, int b, int c) {
        return a + b + c;
    }
}

public class Main {
    public static void main(String[] args) {
        Calc calc = new Calc();
        System.out.println(calc.sum(1, 2)); // 3
        System.out.println(calc.sum(1.5, 2.3)); // 3.8
        System.out.println(calc.sum(1, 2, 3)); // 6
    }
}

🔸 람다 표현식(Lambda Expression)

람다 표현식은 익명 함수를 간결하게 표현한 Java 8 이후의 기능입니다.

✅ 예제 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@FunctionalInterface
interface MathOperation {
    int operation(int a, int b);
}

public class Main {
    public static void main(String[] args) {
        MathOperation addition = (a, b) -> a + b;
        MathOperation multiplication = (a, b) -> a * b;

        System.out.println("Addition: " + addition.operation(5, 3)); // 출력: Addition: 8
        System.out.println("Multiplication: " + multiplication.operation(5, 3)); // 출력: Multiplication: 15
    }
}

🔸 제어문(Control Flow Statement)

제어문은 프로그램의 흐름을 조건에 따라 분기하거나 반복하여 제어할 때 사용하는 구문입니다. Java에서 사용하는 주요 제어문은 다음과 같습니다.

  • 조건문: if, else if, else, switch
  • 반복문: for, while, do-while
  • 분기문: break, continue, return

✅ 예제 코드

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
32
public class ControlFlow {
    public static void main(String[] args) {
        int number = 5;

        // 조건문 예시
        if (number > 0) {
            System.out.println("양수입니다.");
        } else if (number == 0) {
            System.out.println("0입니다.");
        } else {
            System.out.println("음수입니다.");
        }

        // 반복문 예시
        for (int i = 1; i <= 5; i++) {
            System.out.println("반복 횟수: " + i);
        }

        // 분기문 예시
        int sum = 0;
        for (int i = 1; i <= 10; i++) {
            if (i % 2 == 0) {
                continue; // 짝수는 제외
            }
            sum += i;
            if (sum > 10) {
                break; // 합계가 10을 넘으면 중단
            }
        }
        System.out.println("최종 합계: " + sum);
    }
}

Categories:

Updated:

Leave a comment