배열
변수나 데이터를 하나의 변수에 묶어놓은 것을 배열이라고 한다.
왜 써야 하는가?
동일한 데이터 타입의 변수를 하나의 변수에 묶어 쉽게 관리하기 위해
사용방법
선언 후 초기화
int[] arr;
arr = new int[2];
arr[0] = 10;
arr[1] = 20;
배열변수 arr를 선언 후에 크기가 2인 배열을 생성하여 arr에 할당, 각 인덱스에 초기값 지정
선언과 동시에 초기화(new 키워드 생략 가능)
int[] arr = {20,10,40,30};
배열의 데이터 간 대입
int[] arr = {10, 20, 30};
arr[0] = arr[2];
arr[1] = arr[0] + arr[2];
배열의 데이터 간 대입도 가능하다.
이걸 응용하면 여러 가지 작업을 할 수 있다.
데이터 타입의 종류
int[] a;
float[] b;
boolean[] c;
char[] d;
a = new int[3];
b = new float[3];
c = new boolean[3];
d = new char[3];
a[0] = 1;
a[1] = 2;
a[2] = 3;
b[0] = 1.1f;
b[1] = 1.2f;
b[2] = 1.3f;
c[0] = true;
c[1] = false;
c[2] = true;
d[0] = 'd';
d[1] = 'c';
d[2] = 'x';
저장할 데이터 타입에 맞는 변수를 선언해야 한다.
길이와 인덱스
길이(length)는 배열이 가지는 요소(변수, 데이터)의 개수를 뜻한다.
인덱스(index)는 배열의 각 데이터가 저장된 위치(주소)를 나타내는 숫자로, 0부터 시작한다. 이를 통해 인덱스를 사용하여 배열의 특정 데이터에 접근할 수 있다.
예시
길이가 5인 배열을 생성하면, 배열이 가지는 인덱스는 0, 1, 2, 3, 4이다.
for문 사용
배열과 for문은 때려야 땔 수 없는 사이다.
for문을 사용하면 각 배열의 데이터에 쉽게 접근하고, 반복적인 작업이 가능해진다.
사용 방법
초기화
int[] arr3 = new int[30];
for(int i=0; i<arr3.length; i++) {
arr3[i] = (i+1)*10;
System.out.println(arr3[i]);
}
for문을 사용하면 배열의 인덱스에 하나하나 값을 지정하지 않아도 된다.
출력
for(int i=0; i<arr3.length; i++){
System.out.println(arr3[i]);
}
배열의 데이터를 출력하기 위해 for문을 사용하면 배열의 길이만큼 반복하여, 간편하게 모든 데이터를 출력할 수 있다.
응용
배열 데이터의 오름차순 정렬
int[] arr4 = {50, 100, 29, 2, 39};
for(int i=0; i<arr4.length-1; i++){
for(int j=i+1; j<arr4.length; j++) {
if(arr4[i]>arr4[j]){
int tmp = arr4[i];
arr4[i] = arr4[j];
arr4[j] = tmp;
}
}
}
첫 번째 인덱스부터 비교하여 마지막 인덱스를 제외한 모든 인덱스를 비교하기 위해 초기값은 0, 조건식은 i가 배열의 길이에서 1을 뺀 길이보다 작을 때까지 반복한다.
첫 번째 인덱스와 비교할 다른 인덱스를 반복하기 위해 초기값을 i+1로 지정, 조건식은 모든 인덱스와 비교하기 위해 배열의 길이보다 j가 작을 때 반복한다.
if를 사용해 arr [i]의 데이터가 arr [j]의 데이터보다 크다면 코드를 실행한다.
arr [i]의 데이터를 변수 tmp에 저장하고, arr [i]에 arr [j]의 데이터를 대입한다. 이후 arr [j]에 tmp를 대입한다.
만약 오름차순 정렬이 아닌 내림차 순으로 정렬하고 싶다면, if 조건문의 비교 연산자를 '>'에서 '<'로 바꿔주면 된다.
2차원 배열
배열의 배열로, 변수나 데이터를 행과 열의 형태로 저장한다.
각 데이터는 두 개의 인덱스로 접근할 수 있다.
왜 써야 하는가?
- 여러 데이터를 함께 묶어 처리할 수 있어, 쉽게 관리할 수 있다.
- 행렬, 표 등의 형태로 데이터를 저장할 수 있다.
사용방법
선언 후 초기화
int[][] arr;
arr = new int[2][2];
arr[0][0] = 1;
arr[0][1] = 2;
arr[1][0] = 4;
arr[1][1] = 5;
2차원 배열을 선언한다.
선언한 배열의 크기를 [2][2](2x2)로 생성한다.
각 배열의 인덱스에 값을 초기화한다.
선언과 동시에 초기화
int[][] arr = { {10, 20}, {30, 40} }
new키워드 생략이 가능하다.
for문을 사용해 초기화 및 출력
int[][] arr = new int[5][4];
for(int i=0; i<arr.length; i++) {
for(int j=0; j<arr[i].length; j++) {
arr[i][j] = (i+j)*10;
}
}
for(int i=0; i<arr.length; i++) {
for(int j=0; j<arr[i].length; j++) {
System.out.println(arr[i][j]);
}
}
for문을 사용하면 쉽게 초기화, 출력이 가능하다.
forEach
배열에서 for문은 배열의 인덱스로 데이터에 접근했지만, forEach문은 배열의 데이터에 직접 접근한다.
왜 사용해야하는가?
- 배열의 이름과 변수만 하나 지정하면 자동으로 모든 데이터를 처리할수 있어 편리하다.
- 인덱스나 반복문 설정을 신경 쓸 필요가 없다.
사용 방법
for(배열의타입 변수명:배열명){
//실행구문
}
int[] arr = {10, 20, 30};
for(int i:arr) {
System.out.println(i); ==> 10 20 30
}
'Back_end > JAVA' 카테고리의 다른 글
JAVA - 상속 (0) | 2024.09.19 |
---|---|
JAVA - 객체 (0) | 2024.09.11 |
JAVA - 제어문(반복문) (0) | 2024.09.07 |
JAVA - 제어문(조건문) (0) | 2024.09.06 |
JAVA - 연산자 (0) | 2024.09.06 |