<2주차(2)>
배열 개념소개 및 선언 조회 실습, 얕은 복사&깊은 복사&string배열, 다차원 배열 및 배열 실습, 컬랙션 소개, 컬랙션 List, 컬랙션 Stack&Queue&Set&Map
- 배열복사 (얕은 복사, 깊은 복사)
- 얕은 복사
- 배열은 참조형 변수이며 실제값이 아닌 실제값의 주소값을 가짐
- 따라서 배열 변수간에 대입 연산자 = 를 사용해서 복사를 하게 되면 주소값만 복사됨
- 이렇게 주소값만 복사되고 실제값은 1개로 유지되는걸 얕은 복사 라고 함
// 얕은 복사
int[] a = { 1, 2, 3, 4 };
int[] b = a; // 얕은 복사
b[0] = 3; // b 배열의 0번째 순번값을 3으로 수정했습니다. (1 -> 3)
System.out.println(a[0]); // 출력 3 <- a 배열의 0번째 순번값도 3으로 조회됩니다.
- 깊은 복사
- 얕은 복사처럼 가짜 복사가 아니라 진짜 새로운 배열을 똑같이 만들고 싶을때 깊은 복사 사용
- 깊은 복사는 결국 실제 값을 가지고 있는 배열의 기본형 값을 꺼내서 복사
- 반복문 for 문 을 통해서 하나씩 꺼내서 복사해주는 방법과 여러 메서드를 사용하는 방법이 있음
// 깊은 복사
int[] a = { 1, 2, 3, 4 };
int[] b = new int[a.length];
for (int i = 0; i < a.length; i++) {
b[i] = a[i]; // 깊은 복사
}
b[0] = 3; // b 배열의 0번째 순번값을 3으로 수정했습니다. (1 -> 3)
System.out.println(a[0]); // 출력 1 <- 깊은 복사를 했기때문에 a 배열은 그대로 입니다.
- Stack
- Last-In-First-out : 나중에 들어간 것이 가장 먼저 나옴
- 기능
- 선언 : `Stack<Integer> intStack` 형태로 선언
- 생성 : `new Stack<Integer>();` 형태로 생성
- 추가 : `intStack.push({추가할 값})` 형태로 값을 추가
- 조회 : `intStack.peek()` 형태로 맨 위값을 조회
- 꺼내기 : `intStack.pop()` 형태로 맨 위값을 꺼냄 (꺼내고나면 삭제됨)
- Queue
- First In First Out : 먼저들어간 순서대로 값을 조회
- `Queue` 는 생성자가 없는 껍데기라서 바로 생성할수는 없음 (껍데기 = 인터페이스)
- 생성자가 존재하는 클래스인 `LinkedList` 를 사용하여 `Queue` 를 생성해서 받을 수 있음
- 기능
- 선언 : `Queue<Integer> intQueue` 형태로 선언
- 생성 : `new LinkedList<Integer>();` 형태로 생성
- 추가 : `intQueue.add({추가할 값})` 형태로 값을 맨 위에 추가
- 조회 : `intQueue.peek()` 형태로 맨 아래값을 조회
- 꺼내기 : `intQueue.poll()` 형태로 맨 아래값을 꺼냄 (꺼내고나면 삭제됨)
- Set
- `Set` 은 그냥 `Set`으로 쓸수도있지만 `HashSet`, `TreeSet` 등으로 응용하여 사용할 수 있음
- `Set` 는 생성자가 없는 껍데기라서 바로 생성할수는 없음 (껍데기 = 인터페이스)
- 생성자가 존재하는 클래스인 `HashSet` 를 사용하여 `Set` 를 생성해서 받을 수 있음
- 기능
- 선언 : `Set<Integer> intSet` 형태로 선언
- 생성 : `new HashSet<Integer>();` 형태로 생성
- 추가 : `intSet.add({추가할 값})` 형태로 값을 맨 위에 추가
- 조회 : `intSet.get({초회할 순번})` 형태로 순번에 있는 값을 조회
- 삭제 : `intSet.remove({삭제할 값})` 형태로 삭제할 값을 직접 지정
- 포함확인 : `intSet.contains({포함확인 할 값})` 형태로 해당값이 포함되어있는지 boolean 값으로 응답 받음
'개발일지 > JAVA' 카테고리의 다른 글
(항해99) Java 문법 종합반 5주차 정리 (0) | 2023.06.15 |
---|---|
(항해99) Java 문법 종합반 4주차 정리 (0) | 2023.06.12 |
(항해99) Java 문법 종합반 3주차 정리(1) (0) | 2023.05.30 |
(항해99)Java 문법 종합반 2주차 정리(1) (0) | 2023.05.23 |
(항해99)Java 문법 종합반 1주차 정리 (0) | 2023.05.22 |