본문 바로가기

프로그래밍/Java (기초)

배열(array)

반응형

배열


배열의 생성


변수와 다르게 여러개의 데이터를 저장해 그룹핑 하는데 사용하며. Array를 말한다.



    public static void main(String[] args) {

 

        String[] classGroup = { "최진혁", "최유빈", "한이람", "이고잉" };

 

    }


// classGroup은 배열이 담길 변수의 이름이다. String[]은 classGroup에 담을 배열에 담길 데이터의 타입이 문자열의 배열이라는 의미다

배열을 선언할때는 대괄호([])를 붙여야하며, 데이터는 중괄화({})에 넣어주며, 쉼표로 데이터들을 구분한다.


배열의 제어


    public static void main(String[] args) {

        String[] classGroup = { "최진혁", "최유빈", "한이람", "이고잉" };

        System.out.println(classGroup[0]);

        System.out.println(classGroup[1]);

        System.out.println(classGroup[2]);

        System.out.println(classGroup[3]);

 

    }

결과 (*

최진혁

최유빈

한이람

이고잉)


//classGroup 배열의 첫번째 데이터는 [0]으로 표시하며, 최진혁이 출력되었다. 1,2,3도 같은 방법으로 차례대로 출력 되었다.

(배열의 첫번째 데이터는 [0]으로 표현한다.)







    public static void main(String[] args) {

        String[] classGroup = new String[4];

        classGroup[0] = "최진혁";

        System.out.println(classGroup.length);

        classGroup[1] = "최유빈";

        System.out.println(classGroup.length);

        classGroup[2] = "한이람";

        System.out.println(classGroup.length);

        classGroup[3] = "이고잉";

        System.out.println(classGroup.length);

 

    }


// String[] classGroup = new String[4];에서 [4]는 classGroup의 index(배열내 데이터 갯수)에 맞추어 지정해준다.

.length는 배열에 실제 담긴 데이터의 숫자를 의미하는 것이 아니라 배열을 처음 생성할 때 지정한 배열의 크기를 의미한다는 점을 주의하자.





배열에 담긴 각각의 데이터를 원소(element)라고 한다. classGroup[1]은 최유빈이다. 여기서 숫자 1은 원소 최유빈을 식별하는 식별자이다. 

이러한 식별자를 인덱스라고 부른다. 

이 식별자는 중복되면 안 되기 때문에 데이터를 입력할 때 자동으로 1씩 증가되면서 만들어진다. 이 배열이 담을 수 있는 원소의 개수를 length라고 한다. 위의 그림에 따르면 classGroup의 길이는 4가 된다. length는 배열에 담긴 원소의 숫자가 아니라 배열을 선언할 때 지정한 배열이 담을 수 있는 값의 크기를 의미한다.




배열의 사용


다음의 내용을 프로그래밍으로 작성한다.


1 1반 학생들을 번호순으로 정렬해서 줄을 세운다.

2 상담받은 학생의 숫자를 기록한다.

3 대기중인 학생과 상담을 한다.

4 상담받은 학생의 수를 1 증가시킨다.

5 총원보다 상담받은 학생의 수가 작다면 3번 절차로 돌아간다.

6 총원과 상담받은 학생의 수가 같다면 상담을 종료하고 업무를 계속한다.


    public static void main(String[] args) {

 

        String[] members = { "최진혁", "최유빈", "한이람" };

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

            String member = members[i];

            System.out.println(member + "이 상담을 받았습니다");

        }

 

    }


결과

(* 

최진혁이 상담을 받았습니다

최유빈이 상담을 받았습니다

한이람이 상담을 받았습니다

)


// 반복문인 for를 이용하여, i가 1씩 증가할때마다 배열의 데이터를 출력하게 하였다.



for-each


배열의 내용을 탐색할때 for문을 보다 편리하게 사용할수 있다.



    public static void main(String[] args) {

        String[] members = { "최진혁", "최유빈", "한이람" };

        for (String e : members) {

            System.out.println(e + "이 상담을 받았습니다");

        }

    }


// for(String e : members)구문은 배열 members의 값을 변수 e에 담아 전달하고 중괄호 구간 안으로 전달해준다.

반복문의 종료조건이나 조건을 위해 기준값을 증가시키는 등의 반복작업을 내부적으로 감춘것이다.





배열의 오류와 한계


String[] members = { "최진혁", "최유빈", "한이람" };

System.out.println(members[3]);  



Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3

    at ot_array.ExceptionDemo.main(ExceptionDemo.java:7)



// members 배열의 데이터 갯수(length)는 3개지만.

index는 0부터 시작하므로, 3은 존재하지 않는다(0,1,2)

에러 내용 역시, 존재하지 않는 인덱스를 사용했기에 발생하는 에러이다.




String[] members = new String[3];

members[0] = "최진혁";

members[1] = "최유빈";

members[2] = "한이람";

members[3] = "이고잉";

// String[] members = new String[3];

배열의 데이터의 갯수(length)는 4개 이므로 선언을 [4]로 하여야 한다. 거꾸로 index는 0부터 시작하므로 (0,1,2,3)가 된다 


반응형