배열(Array)

자바 2020. 6. 6. 17:25

배열

- 프로그래밍을 하다 보면 같은 형태의 자료형을 수십, 수백 개를 사용할 때가 많다 이러한 변수들 중에서 같은 목적으로 사용하는 변수들을 하나의 이름으로 관리할 수 있다면 편한 부분이 많아지게 된다

 

- 배열은 자료형이 같은 무수히 많은 변수를 하나의 이름으로 관리하고자 할 때 사용하며 반복문과 더불어 사용할 수 있다

 

- 자바에서는 배열을 객체로 취급하며 배열을 사용하기 위해서는 먼저 기억 공간을 할당(객체 생성과 비슷)하는 작업을 해줘야만 한다

 

배열의 차수

- 배열의 차수는 배열을 사용하는 개발자 입자에서 배열에 담기는 데이터를 효율적으로 관리하기 위한 목적으로 이용되는 부분이다

 

- 예를 들어 학생의 이름을 관리하는 배열을 만든 경우 배열에 담기는 데이터가 학생 하나 이므로 1차원 배열을 이용할 수 있다

 

- 학생의 이름과 주소를 관리하는 배열이라고 한다면 학생 한 명당 두 개의 데이터가 필요하므로 2차원 배열을 이용할 수 있다

 

- 2차원 배열과 같이 차수가 1차가 아닌 배열을 다차원 배열이라고 부른다

 

배열의 생성

- 배열의 생성은 다음과 같이 한다

  자료형 [ ] 배열명 = new 자료형 [개수]; 

  자료형 배열명 [ ] = new 자료형 [개수];

 

- 창조 변수를 선언할 때 [ ]의 위치는 관계가 없으나 자바에서는 [ ]가 중간에 들어가는 것을 더 많이 사용한다

 

배열의 초기화

- 배열은 선언과 동시에 초기화를 할 수 있다

 

- 이때 배열에 넣어주는 데이터의 개수만큼 자동으로 배열이 생성된다

 

- int [ ] array = {1, 2, 3, 4, 5};     5개짜리 배열 생성

 

배열의 접근

- 배열은 만들어진 변수의 순서대로 인덱스 번호가 붙게 된다

 

- int [ ] array {1, 2, 3, 4, 5}인 경우 5개의 변수가 생성이 되며 0부터 1씩 증가되는 인덱스 번호를 갖게 된다

 

- array[0]은 첫 번째 변수, array[1]은 두 번째 변수에 접근을 하며 [ ]안의 숫자를 첨자라고 부른다

  

  array[0]  array[1]  array[2]  array[3]  array[4]

 

다 차원 배열

- 다 차원 배열은 1차원 배열과 같은 방법으로 접근을 하지만 첨자를 배열의 차수만큼 작성해서 접근을 한다

 

- 아래는 array [3][2] 배열의 예이다

 

array[0] > array[0][0]

          > array[0][1]

 

array[1] > array[1][0]

          > array[1][1]

 

array[2] > array[2][0]

          > array[2][1]

 

-----------------------------------------------------------------------------------------------------

int [ ] a1 = new int [10];

int a2 [ ] = new int [10]; 

 

//배열의 개수

System.out.pritntln("a1의 개수 : " + a1.length);

System.out.pritntln("a2의 개수 : " + a2.length);

 

int [ ] a3 = {1, 2, 3};

System.out.pritntln("a3의 개수 : " + a3.length);

 

for(int i = 0; i < a3.length ; i++){

    System.out.printf("a3[%d] = %d\n", i, a3[i]);

}

 

int [ ] a4 [ ] = new int [3][5];

int a5 [ ] [ ] = new int [3][5];

System.out.pritntln("a4의 개수 : " + a4.length);

System.out.pritntln("a4[0]의 개수 : " + a4[0].length);

 

int [ ][ ] a6 = {

        {1, 2, 3},

        {4, 5, 6},

        {7, 8, 9}

};

 

for(int i = 0 ; i < a6.length ; i++){

    for(int k = 0 ; k < a6[i].length ; k++){

        System.out.pritnf("a6[%d][%d] = %dn", i, k, a6[i][k]);

-----------------------------------------------------------------------------------------------------

 

예제

-----------------------------------------------------------------------------------------------------

import java.io.BufferedReader

 

try {

    // 키보드 입력용 도구 생성

    InputStreamReader ir = new InputStreamReader(System.in);

    BufferedReader br = new BufferedReader(ir);

    

    // 학생수

    System.out.print("학생수를 입력해 주세요 : ");

    int stuCnt = Integer.parseInt(br.readLine( ));

 

    // 과목 이름 배열

    String [ ] str = {"국어", "영어", "수학"};

 

    // 각 점수를 담을 변수 선언

    int [ ] [ ] point = new int[stuCnt][str.length];

 

    // 각 정수를 입력받는다

    int [ ] tot = new int[stuCnt];

    int [ ] avg = new int[styCnt];

    for(int i= 0 ; i < stuCnt ; i++) {

        tot[i] = 0;

        for(int k = 0 ; k < str.length ; k++) {

            System.out.printf("%d번째 학생 %s 점수 : ", i + 1, str[i]);

            point[i][k] = Integer.parseInt(br.readLine( ));

            tot[i] = tot[i] + point[i][k];

        }

        avg[i] = tot[i] / str.length;

    }

    int alltot = 0;

    int avgtemp = 0;

    int allavg = 0;

    for(int i = 0 ; i < stuCnt ; i++) {

        alltot = alltot + tot[i];

        avgtemp = avgtemp +avg[i];

    }

    allavg = avgtemp / stuCnt;

    for(int i = 0 : i < stuCnt ; i++) {

        System.out.printf("%d번째 학생 : ", i + 1);

        for(int k = 0 ; k < str.length ; k++) {

            System.out.printf("%d ", point[i][k]);

        }

        System.out.printf("%d %d\n", tot[i], avg[i]);

    }

    System.out.printf("%d %d\n", alltot, allavg);

}catch(Exception e) { }

}

-----------------------------------------------------------------------------------------------------

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

생성자(constructor)  (0) 2020.06.16
args  (0) 2020.06.16
Package  (0) 2020.06.03
클래스의 멤버 변수  (0) 2020.05.29
Class Member Method  (0) 2020.05.29
Posted by khon98
,