본문 바로가기

자바

5. 배열

같은 자료형을 여러개 묶어 사용하는 것을 배열이라고 한다.

 

1차원 배열은 다음과 같이 구성된다.

각 원소의 접근하려면 []연산자를 사용하는데 항상 배열의 시작은 0임을 명심해야한다.

ex.) int[] mat = new int[7];

 

1차원 배열의 구성

  • 첫번째 원소를 사용 : mat[0]
  • 두번째 원소를 사용 : mat[1]
  • 세번째 원소를 사용 : mat[2]
  • n번째 원소를 사용 : mat[n-1]

 

 

2차원 배열은 다음과 같이 구성된다.

2차원 배열은 []연산자 2개를 이용하여 접근한다. 앞에 []는 행의 번호, 뒤에 []는 열의 번호가 들어간다.

각 행은 다른 크기의 배열을 지정할 수 있다.

2차원 배열 역시 원소의 시작은 0이다.

ex.) int[][] mat = new int[3][2];

 

2차원 배열의 구성

  • 1행 1열의 원소를 사용 : mat[0][0]
  • 2행 1열의 원소를 사용 : mat[1][0]
  • 3행 2열의 원소를 사용 : mat[2][1]
  • n행 m열의 원소를 사용 : mat[n-1][m-1]

 

 

레퍼런스는 여러가지 다른 이름으로 하나의 배열을 사용하는 방법이다.

레퍼런스를 이용하면 각각 다른 이름으로 배열의 값을 바꾸거나 배열의 값을 추출할 수 있다.

ex.) int[] mat = new int[6];

     arr = mat;

     order = arr;

 

레퍼런스의 구성

  • mat[n] 의값 을 하면 arr[n]과 order[n]의 값 모두 달라진다.

 

예제는 다음과 같다.

public class Array {
	public static void main(String[] args) {
		//배열의 선언
		int[] arr = {1, 2, 3, 4, 5}; //크기는 5, 인덱스는 0 ~ 4, 원소 초기화O
		int[] iArr = new int[5]; //크기가 5인 배열 선언, 원소 초기화X
		for(int i = 0; i < 5; i++) {
			iArr[i] = i + 100;
			System.out.println(arr[i] + ", " + iArr[i]);
		}
		System.out.println();
		
		int[][] iArrs = new int[3][]; //3개의 배열을 선언하고 각 배열은 n개의 배열을 가리킨다.
		iArrs[0] = new int[2]; //0번째 방은 2개를 가리킨다.
		iArrs[1] = new int[3]; //1번째 방은 3개를 가리킨다.
		iArrs[2] = new int[2]; //2번째 방은 2개를 가리킨다.
		
		int[][] arrs= new int[3][2]; //3개의 배열을 선언하고 각 배열은 2개의 방을 가리킨다.
		arrs[0][0] = 1; 
		arrs[0][1] = 2;
		arrs[1][0] = 3;
		arrs[1][1] = 4;
		arrs[2][0] = 5;
		arrs[2][1] = 6;
		
		for(int i = 0; i < 3; i++) {
			for(int j = 0; j < iArrs[i].length;j++) {
				iArrs[i][j] = (i + j) * 10 + 1; 
				System.out.print(iArrs[i][j] + " ");
			}
			System.out.println();
		}
		System.out.println();
		
		for(int i = 0; i < 3; i++) {
			for(int j = 0; j < 2; j++) {
				System.out.print(arrs[i][j] + " ");
			}
			System.out.println();
		}
		System.out.println();
		
		int[] iArrsub = iArr; //iArrsub와 iArr은 같은 곳을 가리킨다.
		for(int i = 0; i<iArr.length;i++) {
			System.out.println(iArr[i] + ", " + iArrsub[i]);
		}
		System.out.println();
		
		for(int i = 0; i < iArrsub.length;i++) {
			iArrsub[i] = iArrsub[i] + 10; //iArrsub를 이용하여 iArr의 값을 변경한다.
			System.out.println(iArr[i] + " , " + iArrsub[i]);
		}
		System.out.println();
	}
}

'자바' 카테고리의 다른 글

7. 절차지향 프로그래밍과 함수 그리고 객체지향2  (0) 2019.07.15
6. 절차지향 프로그래밍과 함수 그리고 객체지향1  (0) 2019.07.07
4. 제어문과 반복문  (0) 2019.06.25
3. 연산자  (0) 2019.06.24
2. 자료형  (0) 2019.06.22