728x90
배열(Array)
배열은 연관된 정보를 그룹핑하는데 사용한다.
즉, 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 의미한다.
배열의 선언과 생성
1. 배열의 선언
1 2 | 타입[] 변수이름; ex> int[] score; String[] name; 타입 변수이름[]; ex> int score[]; String name[]; | cs |
2. 배열의 생성
1 2 3 4 | 타입[] 변수이름; // 배열을 선언(배열을 다루기 위한 참조변수 선언 변수이름 = new 타입[길이]; // 배열을 생성(실제 저장공간을 생성) int[] score; score = new int[5]; | cs |
한줄로 표현 가능
1 | int[] score = new int[5]; | cs |
배열의 정의와 length
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | package com.doubles.javabasic.arrays; public class JavaArrayDefine { public static void main(String[] args) { String[] teamPremierGroup = {"맨체스터유나이티드" , "첼시", "아스날", "리버풀"}; // String형 배열 teamGroup 변수에 맨체스터유나이티드, 첼시, 아스날, 리버풀이 담겨있는 상태 // 하나의 값을 원소 또는 요소, element라고 부른다. // 배열에 담긴 값을 출력해보자. // 배열에 담긴 값의 위치를 나타내는 것을 index, 색인이라고 부른다. // 배열은 항상 0부터 시작하는 것을 기억 System.out.println(teamPremierGroup[0]); System.out.println(teamPremierGroup[1]); System.out.println(teamPremierGroup[2]); System.out.println(teamPremierGroup[3]); // 배열의 length // String[] teamLaligaGroup = {"레알마드리드", "바르셀로나", "아틀레티코", "세비야"}; String[] teamLaligaGroup = new String[4]; teamLaligaGroup[0] = "레알마드리드"; System.out.println(teamLaligaGroup.length); // 4출력 teamLaligaGroup[1] = "바르셀로나"; System.out.println(teamLaligaGroup.length); // 4출력 teamLaligaGroup[2] = "아틀레티코"; System.out.println(teamLaligaGroup.length); // 4출력 teamLaligaGroup[3] = "세비야"; System.out.println(teamLaligaGroup.length); // 4출력 // 위와 같이 출력해보면 해당 배열의 위치에 값이 존재하던 안하던 똑같이 4가 출력된다. // 즉, length는 배열의 index에 담긴 값을 알려주는 것이 아니고, // 배열의 크기를 알려주는 것이라는 것을 알 수 있다. } } | cs |
배열과 반복문
1. 배열과 for문
1 2 3 4 5 6 7 8 9 10 11 12 13 | package com.doubles.javabasic.arrays; public class JavaArrayLoop { public static void main(String[] args) { // 배열과 반복문 String[] members = {"포그바", "즐라탄", "마타", "루니"}; for(int i = 0; i < members.length; i++){ String member = members[i]; System.out.println(member + " : 재계약 완료!"); } } } | cs |
출력결과
2. 배열과 foreach문
*foreach문의 사용
1 2 3 | for(타입변수명 : 배열 or 컬렉션){ 반복할 문장 } | cs |
JDK1.5부터 배열과 컬렉션에 저장된 요소에 접근할 때 기본보다 편리한 방법으로 처리 할 수 있도록 for문의 새로운 문법이 추가되었다. 타입은 배열 또는 컬렉션의 요소의 타입이어야 한다.
배열 또는 컬렉션에 저장된 값이 매 반복마다 하나씩 순서대로 읽혀서 변수에 저장된다.
foreach문과 for문 비교
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | package com.doubles.javabasic.arrays; public class JavaArrayForEach { public static void main(String[] args) { // 배열 Foreach // string형 배열 members 선언 String[] members = {"아자르", "코스타", "윌리안", "칸테"}; // foreach문 for(String e : members){ System.out.println(e + ": 재계약 완료! <-- foreach"); } System.out.println("------------------------------"); // for문 for(int i = 0; i < members.length; i++){ String member = members[i]; System.out.println(member + ": 재계약 완료! <-- for"); } } } | cs |
출력결과
두개의 반복문은 출력결과물에서 볼 수 있듯이 동일한 출력결과를 가져온다.
for문보다 foreach문이 더 간결하게 작성할 수 있다.
하지만 일반적인 for문과 달리 foreach문은 배열이나 컬렉션에 저장된 요소들을 읽어오는 용도로만 사용할 수 있다는 제약이 있다.
배열의 오류
1 2 3 4 5 6 7 8 9 10 | package com.doubles.javabasic.arrays; public class JavaArrayError { public static void main(String[] args) { // 배열의 오류와 한계 String[] members = {"외질", "산체스", "월콧", "지루"}; System.out.println(members[4]); } } | cs |
위의 코드를 실행시켜보면 아래와 같은 오류메시지가 나온다.
배열의 인덱스가 유효한 범위를 넘었다는 의미이다.