배열이란
- 배열이란 동일한 타입의 값들을 하나의 묶음으로 묶은 자료 구조
- 배열은 생성할 때 배열의 크기를 지정해야 하며 한 번 선언한 크기는 변경 불가
EX. int[] numbers = new int[4]; -> int형 데이터가 4개 들어갈 수 있는 배열 - 배열은 참조 자료형으로, 데이터의 원본 값은 힙 메모리에 저장된다.
- 힙 메모리 영역의 모든 값은 강제로 초기화되며, 배열에 값을 할당하지 않으면 자료형에 맞게 강제 초기화된다.
(정수:0, 실수:0.0, boolean:false String:null 등)
1차원 배열
1차원 배열의 선언
배열을 선언하면 스택 메모리에 변수에 대한 공간만 생성하고, 스택 메모리 특성 상 초기화를 해주지 않으면 빈 공간으로 유지된다.
// 1차원 배열 선언
자료형[] 변수명;
자료형 변수명[];
1차원 배열 객체 생성 및 대입
- new 키워드를 사용하여 객체 생성
- 객체는 힙 메모리 영역에 생성되며, 배열의 데이터가 저장
- 객체 생성과 대입은 분리 가능
// 객체 생성 및 대입
자료형[] 변수명 = new 자료형[배열의 길이];
// 객체 생성 및 대입 분리
자료형[] 변수명;
변수명 = new 자료형[배열의 길이];
1차원 배열 값 할당 및 읽기
- 배열은 데이터를 저장할 수 있는 공간마다 방 번호가 존재하며 방 번호를 'Index(인덱스)'라고 한다.
- Index는 항상 0부터 시작하며 1씩 증가한다.
- 존재하지 않는 Index를 호출하면 예외가 발생하며 프로그램이 종료된다. (Index : 0 ~ 배열의 길이 - 1)
// 배열의 해당 인덱스(방)에 값 할당
참조 변수명[인덱스] = 값;
// 배열의 해당 인덱스 방 번호 읽기
참조 변수명[인덱스];
// 위의 약 케이스로 예시
int[] pillCase = new int[7];
// 첫 번째 공간에 알약 2알 저장
pillCase[0] = 2;
// 두 번째 공간에 알약 5알 저장
pillCase[1] = 5;
// 첫 번째 공간에 약 개수 출력
System.out.println(pillCase[0]); // 출력 : 2
int[] fillCase = new int[7]; (알약 케이스) | ||||||
인덱스 : 0 알약 : 2 |
인덱스 : 1 알약 : 5 |
인덱스 : 2 알약 : 0 |
인덱스 : 3 알약 : 0 |
인덱스 : 4 알약 : 0 |
인덱스 : 5 알약 : 0 |
인덱스 : 6 알약 : 0 |
1차원 배열 값 할당의 다양한 방법
// 방법1) 배열 선언과 객체를 생성 후 인덱스로 값 할당
자료형[] 참조 변수명 = new 자료형[배열의 길이];
참조 변수명[0] = 값;
참조 변수명[1] = 값;
...
참조 변수명[배열의 길이 - 1] = 값;
// 방법2) 배열 객체 생성할 때 값을 같이 할당
자료형[] 참조 변수명 = new 자료형[배열의 길이]{값1,값2,값3,...};
자료형[] 참조 변수명 = new 자료형[]{값1,값2,값3,...}; // 배열 길이 생략 시 중괄호의 개수로 자동 컴파일
// 방법3) 객체 생성 X
자료형[] 참조 변수명 = {값1,값2,값3,...};
/*
배열 선언과 객체 생성은 분리할 수 있지만, 객체 생성을 하지 않는 방법으로는 분리할 수 없다.
자료형[] 참조 변수명;
참조 변수명 = {값1,값2,값3,...} (X)
*/
2차원 배열
2차원 배열 개념
- 2차원 배열이란 가로 및 세로 방향의 2차원으로 데이터를 저장하는 배열
- 위의 사진과 같이 모든 행의 길이가 같은 배열을 '2차원 정방 행렬 배열'이라고 한다.
- 배열이 2차원 이상일 때, 마지막 차수에 해당하는 열의 길이를 고정하지 않아도 되며, 이러한 배열을 가변 배열(비정방 행렬 배열)이라 한다.
2차원 배열 선언
자료형[][] 변수명;
자료형 변수명[][];
자료형[] 변수명[];
2차원 배열 객체 생성 및 값 할당
// 방법1) 인덱스를 이용하여 값 할당
자료형[][] 참조 변수명 = new 자료형[행의 길이][열의 길이];
참조 변수명[0][0] = 값;
참조 변수명[0][1] = 값;
참조 변수명[0][2] = 값;
...
참조 변수명[행의 길이 - 1][열의 길이 - 1] = 값;
// 방법2) 배열 객체의 행에 열의 배열 대입
자료형[][] 참조 변수명 = new 자료형[행의 개수][];
참조 변수명[0] = 1차원 배열 객체 생성
참조 변수명[1] = 1차원 배열 객체 생성
...
참조 변수명[행의 길이 - 1] = 1차원 배열 객체 생성
// 방법3) 배열 객체 생성과 동시에 값 할당 (배열 선언과 배열 객체 생성 분리 가능)
자료형[][] 참조 변수명 = new 자료형[][] {
{값,값,값},
{값,값,값},
...
}
// 방법4) 객체 생성 X (배열 선언과 값 대입 분리 불가)
자료형[][] 참조 변수명 = {
{값,값,값},
{값,값,값},
...
}
'Langauge > Java-basic' 카테고리의 다른 글
[Java] 필드와 메서드 (0) | 2022.07.18 |
---|---|
[Java] 클래스와 객체 (0) | 2022.07.13 |
[Java] 제어문 (조건문 / 반복문 / 제어키워드) (0) | 2022.07.08 |
[Java] 연산자 (0) | 2022.07.07 |
[Java] 자료형(Type) (0) | 2022.07.05 |