본문 바로가기
Back_end/JAVA

JAVA - 배열

by hyeon1016 2024. 9. 9.

배열

변수데이터하나의 변수에 묶어놓은 것을 배열이라고 한다.

 

 

왜 써야 하는가?

동일한 데이터 타입의 변수를 하나의 변수에 묶어 쉽게 관리하기 위해

 

 

사용방법

선언 후 초기화

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