# ArrayList , Call By Value
ArrayList 의 대표적인 예를 이용한 데이터 관리의 예를 들어보겠습니다.
Capacity 가 10인 리스트를 생성합니다. 만약 엘리먼트(객체)가 10개 이상이되면 자동으로 두배씩 늘어납니다.

생성합니다. 다음으로 엘리먼트를 추가해 줍니다.

Collection 의 하위 타입을 파라미터로 받는 생성자를 이용한 리스트 생성합니다.
이 때 String 의 subString() 과 같은 기능의 메서드를 이용해서 list1 의 부분셋 을 파라미터로 넘깁니다.

그 다음으로 print 메서드를 이용하여 list1 과 list2 의 엘리먼트 값을 출력해 줍니다.
(내부적으론 toString() 이 묵시적으로 호출됨)

[0, 1, 2, 3, 4, 5]
[0, 2, 4]
출력해주면 이런 2개의 배열이 나오게 됩니다.
위에서 Collection.sort를 해주었으므로 list1 과 list2의 엘리먼트 값이 정렬되서 나옵니다.
여러 예를 더 들어 보자면

add는 추가입니다. B와 C 를 추가해주고 3번 자리에 "하하"라는 문자를 추가하라는 뜻이 됩니다. 따라서
출력하면 [0, 2, 4, 하하, B, C] / list1 은 그대로 나오고 list2가 저런 형태로 나오게 됩니다.
다음은 Call By Value 입니다.
Call By Value : 자바에서 Ptype을 데이터로 call 하는 메서드와 호출 되는 메서드의 특징을 나타냅니다.
메서드에서 ptype 데이터가 보내질 때는 value 값 만을 전달 합니다. 즉 이말은 a 메서드가 b 메서드를 호출 하면서
int a = 10 인 a 를 보낼 때 내부적으로는 a 의 값을 복사하는 메모리를 생성 후 그 값을 b 에 전달 합니다.
b 에서 이 값을 변경해도 a 메서드의 변수에는 영향을 미치지 않는다는 말이죠..
Call By Reference : 메서드 간의 호출 시 파라미터로 객체를 보낼 때 나타나는 현상입니다.
객체를 파라미터로 보낼 시 객체의 Reference 를 복사 해서 넘기게 되므로 두 메서드는 같은 객체를 Ref 하는 상태가 됩
니다. 이러한 현상을 Call By Reference 라 합니다.
'Java' 카테고리의 다른 글
| Java_21Day (0) | 2019.04.16 |
|---|---|
| Java_20Day (0) | 2019.04.15 |
| Java_18Day (0) | 2019.04.11 |
| Java_17Day (0) | 2019.04.09 |
| Java_16Day (0) | 2019.04.08 |