본문 바로가기

Java

[Java] 배열(Array) 정리

 

배열의 필요성

만약 10명의 성적 데이터가 필요하다고 할 경우 배열을 사용하지 않을 경우 10개의 변수를 선언해야 한다.

하지만 배열을 사용할 경우 같은 성격의 데이터들을 한 곳에 모아둘 수 있다는 장점이 있다.


 

1차원 배열의 선언

 

배열 선언 시 대괄호 [] 는 타입 뒤 또는 식별자 뒤에 작성하여도 문제없다.


1차원 배열의 생성

배열을 선언하였으면 생성까지 해주어야 한다. 선언만 했다고 해서 배열이 생성된 것은 아니다.

배열은 객체이기 때문에 new 연산자를 통해 배열을 생성해 준다.


배열의 선언과 생성 과정

 

  • 예제

 

배열의 값 출력

  • 배열과 for문은 밀접한 관계를 가진다. 배열의 값을 출력하기 위해서는 for문을 사용한다.
  • 배열의 index는 0부터 시작하기 때문에 for문의 초기값을 0으로 세팅한다.
  • 그리고 배열의 길이(length)만큼 for문을 돌리고 arr [i]를 통해 배열 안에 모든 값을 출력할 수 있다.
  • 배열의 특정 값을 가져오기 위해서는 index번호 arr [0], arr [1]... 를 통해 가져올 수 있다.
  • 향상된 for문을 통해서도 배열의 값을 출력할 수 있다. (배열의 모든 값 출력 시)

 

2차원(다차원) 배열 의 선언

2차원(다차원) 배열은 1차원 배열에 대괄호 []를 1개 더 추가하면 된다.


2차원(다차원) 배열의 생성

  • 2차원 배열 생성 시 첫 번째 대괄호는 행의 수를 나타내고 , 두 번째 대괄호는 열의 수를 나타낸다.

  • 배열의 길이를 구할 시 행의 길이는 arr.length, 열의 길이는 arr[i].length로 구한다.

 

  • 예제

    // 국어, 영어, 수학 점수 입력 => 총점, 평균
    // 2명 이상의 성적을 입력 받음 => 2차원 배열 구현
    // 국어, 영어, 수학, 총점, 평균
    // 과목 => 1차원 배열
    // 학생 1 국어 :
    
    public static void main(String[] args) {
    
    Scanner sc = new Scanner(System.in);
    int arr[][] = new int[2][5];
    
    String subjects[] = { "국어", "영어", "수학", "총점", "평균" };
    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < 3; j++) {
            System.out.print("학생 " + (i + 1) + subjects[j] + " 입력 : ");
            arr[i][j] = sc.nextInt();
            arr[i][3] += arr[i][j]; // 총점
        }
        arr[i][4] = arr[i][3] / 3; // 평균
    }
    // 정렬(평균을 기준으로 내림차순)
    for (int i = 0; i < arr.length; i++) {
        for (int j = i + 1; j < arr.length; j++) {
            if (arr[i][4] < arr[j][4]) {
                int temp[];
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
    // 출력
    for (String s : subjects) {
        System.out.print(s + "\t");
    }
    System.out.println();
    
    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[i].length; j++) {
            System.out.print(arr[i][j] + "\t");
        }
        System.out.println();
        }
    }

 

'Java' 카테고리의 다른 글

[Java] 객체지향(1) 정리  (0) 2020.07.11
[Java] 배열의 정렬(sort) 정리  (0) 2020.07.11
[Java] Call by Value , Call by Reference 정리  (0) 2020.07.10
[Java] 메서드 정리  (0) 2020.07.10
[Java] 반복문(while, do-while, for) 정리  (0) 2020.07.10