public class ImperativeExample {
public static int sumOfSquaresImperative(int[] numbers) {
int total = 0;
for (int num : numbers) {
total += num * num;
}
return total;
}
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
int result = sumOfSquaresImperative(numbers);
System.out.println(result); // 출력: 55
}
}
import java.util.Arrays;
public class DeclarativeExample {
public static int sumOfSquaresDeclarative(int[] numbers) {
return Arrays.stream(numbers)
.map(num -> num * num)
.sum();
}
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
int result = sumOfSquaresDeclarative(numbers);
System.out.println(result); // 출력: 55
}
}
명령형 코드 : sumOfSquaresImperative 메서드에서는 반복문을 사용하여 배열의 각 숫자의 제곱 값을 누적하고, total 변수를 사용하여 상태를 변경합니다.
선언적 코드 : sumOfSquaresDeclarative 메서드에서는 배열을 스트림으로 변환하고, map() 함수를 사용하여 각 숫자를 제곱한 후, sum() 함수로 값을 합산합니다. 이때 반복문이나 명시적인 변수 사용 없이도 원하는 결과를 얻을 수 있습니다.
Java의 Stream API를 활용하는 것이 선언적 프로그래밍을 강조하는 방식입니다.