일단 해보는 코딩/Java

[Java] 배열(Array)

eun_zoey2 2022. 7. 21. 15:47
728x90
배열(Array)이란?

 

배열은 다수의 동일한 데이터형을 하나의 변수로 묶은 것인데, 다량의 동일한 데이터 타입을 다룰 때 매우 편리하다.

배열의 선언도 new 연산자를 사용해서 int[ ] a(OR int a [ ]) = new int[4]; 식으로 하는데 예전방식이다.

여기서 int[ ]는 배열 요소들의 데이터 타입이고 a가 배열_변수_명이며, int[4]는 크기가 4인 배열이라는 뜻이다.

앞으로 이 배열은 배열 변수 a로 사용하면 요소 4개가 함게 묶여서 사용될 수 있다. 

배열 요소 하나 하나는 일반 변수처럼 참조와 대입이 가능하다. 

배열의 요소의 첨자는 0부터 시작하기 때문에 크기가 4인 배열의 요소에 접근하려면
순서적으로 a[0], a[1], a[2], a[3]으로 해주어야 한다.
배열의 선언과 동시에 초기화 한다면 { } 안에 요소를 열거한다.
int [  ] a = new int [] {1, 2, 3, 4};
OR
int[  ] a = {1, 2, 3, 4};
==> a[0]=1, a[1]=2, a[2]=3, a[3]=4 식으로 index를 사용해서 배열의 요소 값에 접근할 수 있다.

 

package Java04;

public class Test08 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int c[] = {1, 2, 3, 4};	// 1,2,3,4 로 4개의 요소를 가지고 있는 배열 c
		System.out.println(c[0]);
		System.out.println(c[1]);
		System.out.println(c[2]);
		System.out.println(c[3]);
		System.out.println(c[4]);
		/* System.out.println(c[4]);=> 
		Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 4
		at Java04.Test08.main(Test08.java:12)*/ 
	}
	
}

 

다차원 배열
표와 같이 행과 열이 있는 경우에는 다차원 배열이 편리하다. 1차원 배열은 요소 수가 행으로(옆으로) 늘어가지만
2, 3차원 배열에서는 종으로 요소 수가 늘어갈 수 있다. 

** 자바의 다차원 배열에서는 행의 수에 관심이 있고, 열에 대해서는 관심이 없다. ==> 행열에 대해서 정밀하게 다루려면 Numpy를 사용하면 된다.

 

배열의 종류 
1차원 배열 int [ ] a = new int[3]; x 방향 요소 개수
2차원 배열 int [ ] [ ] a = new int [2][3]; y 방향과 x방향 요소 개수
3차원 배열 int [ ] [ ] [ ] a new int[2][2][3]; z 방향, y 방향, x 방향 요소 개수

 

다차원 배열 내의 요소 참조와 값 대입
int[ ][ ] a = { {10, 20, 30},
                         {40, 50, 60}
                                       }; 식으로 한다.

package Java04;

public class Test09 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[][]a= { {10,20,30},	// 2차원 배열 선언과 요소들 2행x3열
					{40,50,60}
				};
		System.out.println(a[0][2]); //1행 3열
		// int[]a = {10, 20, 30, 40} //1차원 배열 선언과 요소들
		a[0][2] = 0;	// 원래 요소의 값 30을 0으로 바꿔줌
		System.out.println(a[0][0]);	//1행 1열
		System.out.println(a[1][2]);	//2행 3열
		System.out.println(a[0][2]);	//1행 3열
		
	}
}

package Java04;

public class Test10 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[][]a= { {10,20},
					{30,40},
					{50,60},
				};
		System.out.println("a[0][0]=" + a[0][0] + ", a[0][1]" + a[0][1]); 
		System.out.println("a[1][0]=" + a[1][0] + ", a[1][1]" + a[1][1]); 
		System.out.println("a[2][0]=" + a[2][0] + ", a[2][1]" + a[2][1]); 
		
	}
}

 

행 개수 확인하기

 

package Java04;

public class Test11 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] a = new int[4];	//배열 a는 4개의 요소를 가지고 있다.
		int b = a.length;	// 배열요소의 a를 b에 넣는다.
		System.out.println("b의 요소 개수는? : "+b + "개");
		int[][]c = { {1,2,3},	// 다차원 배열
					 {4,5} 
				   };
		int d = c.length;	// 배열요소의 c를 d에 넣는다.  
		System.out.println("d의 행의 개수는? "+d + "개");
		int e = c[0].length;
		System.out.println("1행의 요소 개수는? : " + e + "개"); 
		int f = c[1].length;
		System.out.println("2행의 요소 개수는? : " + f + "개"); 
		
		
	}
}

배열 정렬하기

package Java05;

public class Test02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] a = {22,19,72,129,34};
		int b = 5;	// 위 배열의 요소 개수
		int i, j, k;	// 변수 선언
		System.out.println("데이터 표시하시오");
		for (i=0; i<b; i++) {	//b는 배열의 요소 개수, a.length로 대체가능
			System.out.print(a[i]+" ");
		}
		System.out.println("\n-----------------");
		for (j=0; j<b-1; j++) {	//b-1은 정렬이 끝난 인덱스 제외
			for(i=j+1; i<b; i++) { //j+1은 정렬이 끝난 인덱스 제외
				if(a[j] > a[i]) {
					k = a[j];	//치환 
					a[j] = a[i];
					a[i] = k;
				}
		}
	}
		System.out.println("정렬한 것 표시");
		for (i=0; i<b; i++) {
			System.out.print(a[i] + " ");
		}
	}
}