1. 배열이란?
- 동일한 자료형의 순차적 자료 구조
- 인덱스 연산자[]를 이용하여 빠른 참조 가능
- 물리적 위치와 논리적 위치가 동일
- 배열의 순서는 0부터 시작
- 자바에서 객체 배열을 구현한 ArrayList를 많이 활용함
2. 배열 선언과 초기화
- 배열 선언하기
ex) int[] arr1 = new int[10];
ex) int arr2[] = new int[10];
- 배열은 선언과 동시에 자료형에 따라 초기화 된다. (정수는 0, 실수는 0.0, 객체는 null)
- 필요에 따라 초기값을 지정할 수 있다.
ex) int[] numbers = new int[] {10, 20, 30}; // 개수 생략해야 함
ex) int[] numbers = {10, 20, 30} // new int[] 생략 가능
ex) int[] numbers;
numbers = new int[] {10, 20, 30}; // 선언 후 배열을 생성하는 경우 new int[]를 생략할 수 없다.
3. 배열 사용하기
- []인덱스 연산자 활용 > 배열 요소가 저장된 메모리의 위치를 연산하여 찾아준다.
- 배열을 이용하여 합을 구하기
package ch20; public class ArrayTest { public static void main(String[] args) { int arr[] = new int[10]; int total = 0; for(int i=0, num=1; i<arr.length; i++) { arr[i] = num++; } for(int num : arr) { // arr 배열의 처음부터 끝까지의 value가 num에 들어감. total += num; } System.out.println(total); } } |
4. 배열의 길이와 요소의 개수는 동일하지 않다.
- 배열을 선언하면 개수만큼 메모리가 할당되지만, 실제 요소(데이터)가 없는 경우도 있다.
- 배열의 length 속성은 배열의 개수를 반환해주기 때문에 요소의 개수와는 다르다.
- length를 활용하여 오류나는 경우
double[] dArr = new double[5]; dArr[0] = 1.1; dArr[1] = 2.1; dArr[2] = 3.1; double mtotal = 1; for(int i = 0; i< dArr.length; i++) { mtotal *= dArr[i]; } System.out.println(mtotal); |
> 기대하는 결과 값은 1.1 x 2.1 x 3.1 = 7.161이 겠지만, 실제 결과 값은 0.0이 된다.
그 이유는 배열을 선언하고 값을 넣지 않으면 실수의 경우에는 0.0으로 초기화되기 때문이다.
원하는 결과 값을 얻기 위해서는 아래와 같이 코딩해야 한다.
(요소의 개수에 대한 변수(count)를 따로 유지)
double[] dArr = new double[5]; int count = 0; dArr[0] = 1.1; count++; dArr[1] = 2.1; count++; dArr[2] = 3.1; count++; double mtotal = 1; for(int i = 0; i< count; i++) { mtotal *= dArr[i]; } System.out.println(mtotal); |
5. 향상된 for문 사용하기
- 배열의 n개 요소를 0부터 n-1까지 순차적으로 순회할 때 간단하게 사용하는 방법
ex) for (변수 : 배열) {}
package ch20; public class CharArrayTest { public static void main(String[] args) { char alphabets[] = new char[26]; char ch = 'A'; for(int i=0; i<alphabets.length; i++) { alphabets[i] = ch++; } for(char alpha : alphabets) { System.out.println(alpha + "," + (int)alpha); } } } |
6. 2차원 배열 사용하기
- 다차원 배열 : 2차원 이상으로 구현된 배열
- 평면(2차원 배열)이나 공간(3차원 배열)을 활용한 프로그램 구현
- 2차원 배열 예제
ex) int[][] arr = new int[2][3];
public static void main(String[] args){ int[][] arr = {{1,2,3},{1,2,3,4}}; int i,j; for(i=0; i<arr.length; i++){ for(j=0; j<arr[i].length; j++){ System.out.print(arr[i][j] + ","); } System.out.println("\t" + arr[i].length); } } |
> arr.length는 행의 길이를 뜻하고, arr[0].length는 0번째 행의 열을 뜻한다.
결과 값
1,2,3, 3
1,2,3,4, 4
'개발공부 > Java' 카테고리의 다른 글
[Java] 14. 객체 간의 상속 (0) | 2021.12.03 |
---|---|
[Java] 13. 객체 배열을 구현한 클래스 - ArrayList (0) | 2021.12.01 |
[Java] 11. static과 싱글톤 패턴 예제 (0) | 2021.11.28 |
[Java] 10. static 응용 - 싱글톤 패턴(Singleton Pattern) (0) | 2021.11.27 |
[Java] 09. Static 변수와 Static 메서드에 대하여...(2) (0) | 2021.11.26 |