자바는 기본적으로 pass by value 만을 언어적으로 허용한다. <br> 따라서 자바에서 address value 를 pass 해서 참조할 수는 있어도, <br> reference 라는 개념은 자바에서 허용되지 않는다.
아래의 c++ 코드에서 &a 와 &b 가 바로 reference 이다. <br>
자바에서는 value 에 대한 직접적인 reference 를 언어적으로 지원하지 않는다. <br>
기껏해야 value 를 객체로 감싸서, 객체의 address를 통해 객체 내부의 값을 변경할 수 있을 뿐이다.
void switch_by_ref(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int a = 10;
int b = 20;
switch_by_ref(a, b); // a, b 의 값이 서로 바뀌어 있다.
cout << "a : " << a << endl;
cout << "b : " << b << endl;
return 0;
}
> p277 부작용이 없는 함수...
부작용이 없는 함수란 무엇일까요?
우선 책에서는 side-effect가 없는 함수라고 이야기하고 있습니다.
그러면 사이드 이펙트가 없다는 말이 무엇일까요??
제가 이해했을 떄는 스트림 연산을 진행함에 있어, 외부 변수와 소통을 자주하면 이제 예상하지 못한 사이드 이펙트가 발생해서 그러지 않을까 생각해요
왜 이러한 사이드 이펙트가 발생하는 걸까요..?
사이드 이펙트가 없다는 말이 무엇일까요?
공부를 하며 이해한 내용을 코드로 정리해보기 위해, 1 부터 5까지의 리스트 안 숫자들의 합을 구해서, 15 을 반환하는 함수 sum 을 구현하려고 한다고 예시를 들어보겠습니다.
public static void main(String[] args) {
int sum = sum(Arrays.asList(1, 2, 3, 4, 5));
System.out.println(sum);
}