-
[Java 자바] 5. 참조 타입 ② 배열, 배열 생성, 배열 길이, 다차원 배열, 향상된 for문Programming/Java 2022. 7. 30. 22:48반응형
5-6. 배열 타입
5-6-1. 배열이란?
- 같은 타입의 데이터를 연속된 공간에 나열하고, 각 데이터에 인덱스(index)를 부여해 놓은 자료구조
- 변수 선언시 힙 영역에 아래와 같은 배열이 생성되며, 스택영역은 힙영역의 참조값을 저장
- 인덱스는 0부터 시작하므로 주의- 배열은 한 번 크기가 정해지면 그 크기를 바꿀 수 없으므로 사용에 주의
int[] score = {90, 85, 60, 100, 95};
5-6-2. 배열 선언
데이터타입[] 변수; int[] intArray; String[] strArray; // 이 때 값을 초기화하지 않으면 스택 영역에 참조값이 null인 상태로 저장됨 // null 상태로는 배열을 사용할 수 없기 때문에, 오류가 발생할 수 있음
5-6-3. 값 목록으로 배열 생성
- 배열 항목에 저장할 값의 목록이 있다면 아래와 같이 배열 객체 생성 가능
데이터타입[] 변수 = {값0, 값1, 값2, 값3, ...}; // 단, 배열 변수는 변수와 달리 선언 이후에 값을 추가할 수 없음 int[] intArr; intArr = {25, 90, 100}; // 컴파일 에러 // 배열 변수를 미리 선언 후, 값 목록이 나중에 결정되는 상황에서는 new 연산자를 통해 값 목록을 지정해야 함 String[] strArr = null; strArr = new String[] {"str1", "str2", "str3"};
5-6-4. new 연산자로 배열 생성
- 값의 목록이 없더라도 크기를 미리 지정하여 객체 생성 가능 (힙 영역에 크기 만큼의 배열이 생성되며 참조값도 생성됨)
데이터타입[] 변수 = new 데이터타입[길이]; int[] score = new int[5];
- 이 때, 배열의 값은 데이터타입의 초기화 값을 따른다. (int는 0, String은 null 등)
[ 참고: 데이터타입별 배열의 초기값]
분류 데이터타입 초기값 기본 타입 (정수) byte[]
char[]
short[]
int[]
long[]0
'u\0000'
0
0
0L기본 타입 (실수) float[]
double[]0.0F
0.0기본 타입 (논리) boolean[] false 참조 타입 클래스[]
인터페이스[]null
null- 배열을 생성한 후 새로운 값을 저장하려면 인덱스로 접근해 대입연산자를 사용
score[0] = 100;
5-6-5. 배열의 길이
배열변수명.length; int[] score = {100, 90, 50, 80, 75}; System.out.println(score.length;) // 5 출력
5-6-6. 다차원 배열
2차원 이상의 배열을 의미하며, 배열 요소로 또 다른 배열을 가지는 배열을 의미
[ 2차원 배열의 선언 ]
int[][] score = new int[2][3];
- 2차원 배열은 배열요소로 또 다른 배열의 참조값을 저장
int[][] score = new int[3][]; // 이후 사용 상황에서 각 1차원 배열의 길이를 지정하고 사용할 수 있다. score[0] = new int[3]; score[1] = new int[2];
-정확한 배열의 길이를 알고 인덱스를 사용하지 않으면 ArrayIndexOutOfBoundsException 발생
5-6-7. 향상된 For 문
for (데이터타입 변수 : 배열) { 배열을 돌며 반복할 실행문; } // 예시 int[] nums = {1, 2, 3}; int sum = 0; for(int num : nums){ sum += num; } // 6 출력
반응형'Programming > Java' 카테고리의 다른 글
[Java 자바] 6. 클래스 ② 클래스 선언, 객체 생성 (0) 2022.07.31 [Java 자바] 6. 클래스 ① 객체지향 프로그래밍, 객체와 클래스 (0) 2022.07.30 [Java 자바] 5. 참조 타입 ① 데이터 타입 분류, 메모리 사용 영역, String (0) 2022.07.30 [Java 자바] 4. 조건문과 반복문 ② 반복문, for문, while문, do-while문 (0) 2022.07.30 [Java 자바] 4. 조건문과 반복문 ① 조건문, if, if-else, else if, switch (0) 2022.07.30