07-1.배열이란?
- 동일한 자료형의 순차적 자료 구조
- 인덱스 연산자[]를 이용하여 빠른 참조가 가능
- 물리적 위치와 논리적 위치가 동일
- 배열의 순서는 0부터 시작
- 자바에서는 객체 배열을 구현한 ArrayList를 많이 활용함
배열 선언과 초기화
- 배열 선언하기
int[ ] arr1 = new int[10]; int arr2[ ] = new int[10]; |
- 배열 초기화 하기
배열은 선언과 동시에 자료형에 따라 초기화 됨 (정수는 0, 실수는 0.0, 객체는 null)
필요에 따라 초기값을 지정할 수 있음
int[ ] numbers = new int[ ] {10, 20, 30}; // 개수 생략해야 함 int[ ] numbers = {10, 20, 30}; // 선언과 동시에 초기화 하는 경우는 new int[ ] 생략 가능 int[ ] ids; ids = new int[ ] {10, 20, 30}; // 선언 후 배열을 생성하는 경우는 new int[ ] 생략 불가능 |
배열 사용하기
- [ ] 인덱스 연산자 활용 - 배열 요소가 저장된 메모리의 위치를 연산하여 찾아 줌
studentIDs[0] = 10; // 배열의 첫 번째 요소에 값 10을 저장 |
- 배열을 이용하여 합을 구하기
![]() |
![]() |
전체 길이를 알고 싶은 배열 이름 뒤에 도트(.) 연산자를 붙이고 length 속성을 쓰면 배열 길이를 반환한다.
for문의 조건에서 얼만큼 반복할지 결정해야 하는데, 배열 요소 끝까지 반복하기 위해 배열 전체 길이(length)를 넣는다.
배열 전체 길이만큼 수행문을 반복해야 할 때는 숫자를 직접 사용하는 것보다 length 속성을 사용하는 것이 좋다 !
배열의 처음부터 끝까지 순회하는 경우
for(변수 : 배열) { 반복 실행문; } |
![]() |
0번부터 ids라는 배열의 끝까지 하나씩 돌면서 그 데이터를 int id 라는 변수에 넣어라
꼭 동일한 데이터 타입을 선언해야함!
문자 배열을 만들어 A-Z까지 배열에 저장하고 이를 다시 출력하기
![]() |
출력
![]() |
객체 배열 사용하기
객체 배열 선언과 구현
- 기본 자료형 배열은 선언과 동시에 배열의 크기만큼의 메모리가 할당되지만, 객체 배열의 경우엔 요소가 되는 객체의 주소가 들어갈(4바이트, 8바이트) 메모리만 할당되고(null) 각 요소 객체는 생성하여 저장해야 함
예제
![]() |
![]() |
출력 (Book 인스턴스 멤버들과 Book 인스턴스를 저장한 메모리 공간 주소)
![]() |
객체 배열 복사하기
- System.arrayCopy(src, srcPos, dest, destPos, length) 자바에서 제공되는 배열 복사 메서드
- 얕은 복사 : 객체 주소 값만 복사되어 한쪽 배열의 요소를 수정하면 같이 수정 됨. 즉, 두 배열이 같은 객체를 가리킴
- 깊은 복사 : 인스턴스를 따로 관리하는 복사. 즉, 복사한 배열 요소는 기존 배열 요소와 서로 다른 인스턴스를 가리키므로 기존 배열값이 변경되어도 영향을 받지 않음. 직접 인스턴스를 만들고 그 값을 복사해야함.
07-2.다차원 배열
다차원 배열
- 이차원 이상으로 구현 된 배열
- 평면(이차원 배열)이나 공간(삼차원 배열)을 활용한프로그램 구현
이차원 배열 예제
![]() |
전체 배열 길이인 arr.length는 행의 개수를
각 행의 길이 arr[i].length는 열의 개수를
07-3.ArrayList 클래스 사용하기
객체 배열을 구현한 클래스 ArrayList
java.util 패키지에서 제공되는 ArrayList
- 기존의 배열 선언과 사용 방식은 배열의 길이를 정하고 요소의 개수가 배열의 길이보다 커지면 배열을 재할당하고 복사해야했음
- 배열의 요소를 추가하거나 삭제하면 다른 요소들의 이동에 대한 구현을 해야 함
- Array List는 객체 배열을 좀더 효율적으로 관리하기 위해 자바에서 제공해 주는 클래스
- 이미 많은 메서드들이 최적의 알고리즘으로 구현되어 있어 각 메서드의 사용 방법만 익히면 유용하게 사용할 수있음
ArrayList의 주요 메서드
![]() |
ArrayList 기본 형식
ArrayList<사용할 객체의 자료형> 배열이름 = new ArrayList<사용할 객체의 자료형>( ); |
JavaDoc 으로 메서드 더 보기
[ Shift + F2 ]
임포트(import)
ArrayList는 java.util 패키지에 구현되어 있는 클래스이다.
현재 만든 프로그램에는 java.util 패키지가 포함되어 있지 않기 때문에 ArrayList를 사용하기 위해서는 컴파일러에게 ArrayList가 어디에 구현되어 있는지를 알려줘야 한다.
이렇게 내 코드에 없느 클래스를 가져와 사용할 때, 이 클래스가 어디에 구현되어 있다고 알려주기 위해 코드 맨 위에 선언하는 것을 임포트(import) 한다고 한다.
즉, ArrayList를 사용하려면 자바 클래스를 선언하기 전에 import java.util.ArrayList; 문장을 반드시 써 주어야 한다.
[ Ctrl + Shift + O ]
예제
![]() |
size() 메서드 : 배열에 유효한 값이 저장된 요소 개수를 반환. 배열에 추가된 요소 개수만큼만 출력하기 위함.
'Programming Language > JAVA' 카테고리의 다른 글
아리송한 개념들 짜집기 모음 (0) | 2023.05.22 |
---|---|
[Do it 자바 프로그래밍 입문] 객체지향 입문 복습 문제 풀이 (0) | 2023.05.22 |
[Do it 자바 프로그래밍 입문] 06.클래스와 객체 2 (0) | 2023.05.12 |
[Do it 자바 프로그래밍 입문] 05.클래스와 객체1 (0) | 2023.05.11 |
[Do it 자바 프로그래밍 입문] 연습문제 - 다이아몬드 모양 (0) | 2023.05.10 |