✔ 1차원 배열의 이해와 활용
배열이란?
- 자료형이 같은 둘 이상의 값을 저장할 수 있는 메모리 공간
- 구조에 따라 1차원 배열과 2차원 이상의 다차원 배열로 나뉨
1차원 배열이란?
- 타입이 같은 둘 이상의 데이터를 저장할 수 있는 1차원 구조의 메모리 공간
- 둘 이상의 변수가 선의 형태로 존재하는 배열을 뜻하기도 함
- 자바에서는 배열도 인스턴스로 처리하게 됨
- 1차원 배열의 생성문은 참조변수의 선언과 배열의 생성으로 이루어짐
- 참조변수의 선언에는 참조할 대상에 대한 자료형을 정보를 나타냄
- 기본 자료형 외에도 인스턴스를 저장할 수 있는 배열의 생성도 가능함
- 1차원 배열의 참조변수는 배열의 길이에 상관없이 참조가 가능함
// int[] ref : int형 1차원 배열 인스턴스를 참조할 수 있는 참조변수의 선언
// new int[5] : int형 값 5개를 저장할 수 있는 배열 인스턴스의 생성
int[] ref = new int[5];
int[] ref;
ref = new int[5];
배열을 대상으로 한 값의 저장과 참조
- 배열의 인덱스 값을 이용해 값을 저장하고 저장된 값을 참조
- 배열 요소의 위치를 지정하는 인덱스의 값은 0에서부터 시작함
- 반복문을 이용하면 배열의 순차적 접근을 진행할 수 있음
int[] ar = new int[3];
ar[0] = 7;
for(int i = 0; i < ar.length; i++) {
System.out.println(ar[i]);
}
배열을 생성과 동시에 초기화하기
- 변수와 마찬가지로 생성과 동시에 초기화가 가능함
- 초기화할 값들을 중괄호를 이용해서 나열하면 됨
- 초기화할 값들이 있을 경우, 값들의 수를 통해 배열의 길이 정보를 계산할 수 있으므로 배열의 길이 정보를 생략해야 함
int[] arr = new int[] {1, 2, 3};
int[] arr = {1, 2, 3};
참조변수 선언의 두 가지 방법
- 동일한 참조변수를 두 가지 방법으로 선언할 수 있음
int[] arr;
int arr[];
배열의 참조 값과 메소드
- 배열도 인스턴스이므로 메소드 호출 시 참조 값의 전달이 가능함
- 배열 인스턴스를 참조할 수 있는 참조 값만 인자로 전달되고, 이 값을 매개변수 받을 수 있게 됨
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6, 7};
int sum = sumOfAry(ar);
static int sumOfAry(int[] ar) {
int sum = 0;
for (int i = 0l i < ar.length; i++) {
sum += ar[i];
}
return sum;
}
}
배열의 초기화와 복사
- 배열이 생성되면 모든 요소는 0 또는 null로 초기화됨
int[] ar = new int[10]; // 0으로 초기화
String[] ar = new String[10]; // null로 초기화
- 만약 기본 자료형 배열을 0 이외의 값으로 초기화해야 한다면 fill 메소드 호출을 통해 저장할 수 있음
public static void fill(int[] a, int val)
public static void fill(int[] a, int fromIndex, int toIndex, int val)
- 또한 배열을 복사해야 하는 상황이라면 arraycopy 메소드 호출을 통해 복사할 수 있음
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
main 메소드의 매개변수 선언
- main 메소드의 매개변수 선언으로는 String 배열의 참조변수가 선언됨
- String 배열을 구성할 문자열을 프로그램 사용자가 전달하게 되면 이 내용을 대상으로 String 배열이 구성되고,
이 배열의 참조 값이 전달되면서 main 메소드가 호출되게 됨
class Simple {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++)
System.out.println(args[i]);
}
}
C:\JavaStudy>java Simple Coffee Milk Orange
String[] arr = new String[] {"Coffee", "Milk", "Orange"};
✔ enhanced for문
enchanced for문이란?
- 배열에 저장된 모든 요소를 대상으로 연산, 참조 또는 탐색을 진행할 때 사용
- for-each문으로도 불림
- 코드의 양이 절대적으로 줄어들고, 배열의 길이 정보를 직접 확인하고 입력할 필요가 없게 됨
for(요소 : 배열) {
반복할 문장들
}
- 배열에 저장된 내용이 기본 자료형의 값이 아닌 인스턴스의 참조 값인 인스턴스 배열을 대상으로 하는 경우에도 동일함
✔ 다차원 배열의 이해와 활용
다차원 배열이란?
- 배열의 논리적 메모리 구조가 2차원 이상의 형태를 보이는 배열을 다차원 배열이라고 함
- 즉 2차원 배열도 다차원 배열이고 3차원 배열도 다차원 배열
- 그러나 일반적인 프로그램에서는 2차원을 초과하는 구조의 배열을 잘 사용하지 않음
2차원 배열이란?
- 다수의 변수가 면의 형태로 존재하는 배열을 뜻함
- 2차원 배열은 다수의 1차원 배열이 묶여서 만들어지게 됨
- 2차원 배열의 생성문도 참조변수의 선언과 배열의 생성으로 이루어짐
- 참조변수의 선언에는 참조할 대상에 대한 자료형을 정보를 나타냄
- 배열의 생성으로는 배열의 세로 길이와 가로 길이를 의미함
- 그러므로 2차원 배열의 요소에 접근할 때에는 세로와 가로의 위치인 인덱스를 각각 지정해야 함
int[][] arr = new int[3][4];
arr[1][0] = 5;
2차원 배열의 초기화
- 1차원 배열과 마찬가지로 생성과 동시에 초기화가 가능함
int[][] arr = new int[][]{
{11, 22, 33},
{44, 55, 66},
{77, 88, 99}
};
int[][] arr = {
{11, 22, 33},
{44, 55, 66},
{77, 88, 99}
};