Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- jsp 테이블
- 비교
- 배열 생성자
- 무한 파라미터
- 값 넣기
- r타입 비교
- 배열 값 추가
- 값 추가
- 2차원배열
- 플러터 null
- String 검색
- 멀티 페이지
- 마우스 올릴때
- 리스트
- 파라미터 무한
- 배열 값
- 인티저 값 비교
- Integer 값 비교
- 같은지
- list
- 값 비교
- 옵션태그
- 2차원 리스트
- String 찾기
- R 비교
- 마우스 올리면
- 2차원 list
- select
- jsp
- R타입비교
Archives
- Today
- Total
JAVA를 JAVA라
[JAVA] ArrayList의 값은 주소값이라고 생각하자 본문
int cnt = 1;
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
innerList.add(cnt);
cnt++;
}
list.add(innerList); //이렇게 하면 innerList의 주소값을 list에 추가!!
// innerList.clear(); //이렇게 하면 저장됐던 자리의 1 2 3이 삭제된다...
innerList = new ArrayList<Integer>(); //새 객체 생성!! 새 주소값 생성
}
//////출력 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
/*
* innerList의 주소값이 123번지라면,
* list.add(innerList) 실행 시 list에 111번지가 연결된다.
* 다음에 innerList 값을 변경하면 위의 111번지의 값이 변경되므로
* 다같이 변경... 즉 [[7, 8, 9], [7, 8, 9], [7, 8, 9]] 가 된다..
* 이것을 막기 위해 new ArrayList<E>() 로 새 객체 생성,
* 즉 새 주소값을 생성하여 list에 넣어준다.
* 그러면 [[111번지], [새 생성 112번지], [새 생성 113번지]]
* 가 연결된다!
*
*/
ArrayList<Integer> list0 = list.get(0);
list.remove(0);
System.out.println(list0);
System.out.println(list);
/*
* list는 주소값을 저장하는것 이라고 생각합시다.
* [1,2,3]은 111번지에 저장되어 있고,
* list의 0번째 인덱스와 list0의 0번째 인덱스에 주소값(즉 111번지)이 저장되어 있습니다.
* list의 0번째를 remove해도 [1,2,3]이라는 값이 사라지는게 아닌
* list의 0번째에 연결된 주소값 링크를 끊는 것이므로
* list0은 [1,2,3]이 아직 연결되어 있습니다.
*/
'JAVA > JAVA 수업' 카테고리의 다른 글
[JAVA & DB] 21.06.15 (0) | 2021.06.15 |
---|---|
[JAVA] Linked List (0) | 2021.06.11 |
[JAVA] 21.06.10 (0) | 2021.06.10 |
[JAVA & DB] 21.06.09 (0) | 2021.06.09 |
[JAVA & HTML] 21.06.08 (0) | 2021.06.08 |
Comments