배열
>의미
: 동일한 타입의 값들을 하나의 묶음으로 만든 자료 구조
>장점
: 반복문을 이용하여 모든 배열 혹은 일부 배열을 검색할 수 있음.
: 동일 타입의 데이터를 저장할 때, 일일이 변수를 만들 필요가 없음.
>선언
배열 타입[] 참조변수;
(1) 참조변수 = new 타입[길이] // 모든 요소가 0으로 초기화.
(2) 참조변수 = new 타입[] {초기화값} // 초기화 값 만큼의 배열 길이가 정해진다.
(3) 참조변수 = new 타입[0]; // 빈 배열.
예시.
int[] num;
num = new int[3] // 길이가 3이고 배열의 요소가 {0,0,0}인 int 배열 생성
num = new int[]{1,2,3}// 길이가 3이고, 배열의 요소가 {1,2,3}인 int 배열 생성
num = new int[0] // 길이가 0인 빈 int 배열 생성.
num = new int[]{} // 길이가 0인 빈 int 배열 생성.
int[] num = new int[0] // 한 줄로 가능.
>특징
: 참조 변수는 실제 값이 아닌 참조 값을 갖는다.
: 실제 값인 배열은 초기화 된 길이만큼 특정 위치의 주소를 시작으로 순차적으로 저장된다.
: 배열의 요소 하나당 메모리 공간 크기는 배열 타입의 크기와 같다.
double[] num = new double[3];
//1. num이라는 참조 변수 생성.
//2. 8byte(double)의 메모리 공간 3곳에 0이 저장된 배열 생성.(메모리 주소는 연속적)
//3. 참조 변수 num이 배열의 첫 번째 요소가 저장된 주소를 참조
>1차원 배열
: 배열 타입에 '[ ]'가 하나인 경우,
: 위에서 설명한 배열이 1차원 배열
>배열의 접근
: 참조변수[인덱스] 로 접근 가능
: 호출 및 수정 가능
int[] num = new int[]{1,2,3};
System.out.println("출력: " + num[0]); // 인덱스는 0부터 시작
System.out.println("출력: " + num[1]);
System.out.println("출력: " + num[2]);
/*
출력: 1
출력: 2
출력: 3
*/
>2차원 배열
: 배열 타입에 '[ ]'가 두 개인 경우,
: 배열안에 배열이 있다고 생각하면 편함.
/* 2차원 배열의 초기화 */
int[][] num2 = new int[2][3];
int[][] num2 = new int[][]{
{0,0,0}
{0,0,0}
};
//: 길이가 3인 배열이 2개로 묶여있는 2차원 배열.
//: 모든 요소는 0으로 초기화.
//: 두 초기화는 방식만 다를 뿐, 같은 초기화 결과를 보임.
>2차원 배열; 행렬로 이해하기
예시: int[ ][ ] num2 = new int[2][3]; // 2행 3열의 배열
>다차원 배열; 3차원 이상의 배열
: 1차원이 늘어날 때 마다 인덱스 표현 방식(배열의 '[ ]')가 하나씩 늘어남.
: 배열이라는 덩어리 묶음 속에 덩어리 묶음이 계속 묶이는 것으로 이해.
: 현실 세계의 차원으로 생각하면 3차원은 높이 축으로 쌓이는 개념(사람 개념)
: 하지만 디지털 개념으론 그냥 순차적인 주소에 저장됨.
>가변 배열
: 배열의 길이를 고정하지 않은 배열.
: 2차원 이상의 배열에서는 마지막 차수에 해당하는 배열의 길이를 고정하지 않아도 됨.
: 즉, 가장 내부에 묶이는 배열은 길이 설정이 자유롭다. (외부 배열은 생성된 상태)
int[][] num = new int[4][];
int[0] = new int[3]; // int[0]의 내부 배열로 길이가 3인 배열 생성.
int[1] = new int[6]; // int[1]의 내부 배열로 길이가 6인 배열 생성.
int[2] = new int[0]; // int[2]의 내부 배열로 길이가 0인 배열 생성.
int[3] = new int[6]; // int[3]의 내부 배열로 길이가 6인 배열 생성.
>1차원 배열, 가변 배열처럼 쓰기
: 메서드를 이용해서 길이를 늘려주는 방법 사용. (예시: Arrays.copyOf)
int[] num= new int[0]; // 원래는 길이가 0인 빈 배열
num = Arrays.copyOf(num, num.length + 1); // 길이 1 추가 (총 길이: 1)
num[0] = 10;
num = Arrays.copyOf(num, num.length + 1); // 길이 1 추가 (총 길이: 2)
num[1] = 2;
System.out.println(num[0]);
System.out.println(num[1]);
/*
10
2
*/
'코드스테이츠_국비교육 > [Section1]' 카테고리의 다른 글
12_객체지향 프로그래밍 기초2(생성자)_22.09.05 (0) | 2022.09.04 |
---|---|
11_객체지향 프로그래밍 기초_22.09.02 (0) | 2022.09.02 |
09_제어문(조건문, 반복문)_22.08.31 (0) | 2022.09.02 |
08_Java의 기초.part(java, 변수, 타입, 문자열, 연산자, 콘솔 입출력)_22.08.30 (0) | 2022.08.30 |
07_Git의 기초_22.08.29 (0) | 2022.08.30 |