동일한 자료형 여러 개를 묶어서 처리하는 자료구조
변수이름과 인덱스(index)를 이용하여 데이터를 표현
동일한 자료형 여러 개를 선언하는 경우 변수가 여러 개 필요
배열을 이용하면 하나의 변수만 필요하여 효율적으로 프로그래밍 가능
배열 선언 시 배열 요소의 개수는 지정하지 않음
형식 : 자료형{}배열이름; 자료형 배열이름[];
배열을 생성하는 것은 메모리 할당하는 작업임
new 연산자를 이용하여 배열에 메모리를 할당하면 배열이 생성됨
배열 생성 시 배열 요소의 개수를 지정함
형식 : 자료형 배열이름[]=new자료형[배열 요소의 개수];
배열 선언 및 생성 후 배열 요소의 값들을 지정하는 방법
배열 선언과 동시에 배열 요소의 값들을 지정하는 방법
배열 선언 후 배열 요소의 값들을 지정하는 방법
배열 이름.lenth
-배열의 멤버변수로 배열요소의 개수를 가지고 있음
배열과 반복문의 관계
-배열의 인덱스값은 0부터 순차적으로 증가함
-반복문을 이용하면 인덱스값을 순차적으로 증가할 수 있음
배열이름.length: 배열 요소의 개수를 가짐
문자열 배열 선언 및 생성하기:String[]a=new String[3];
문자열 배열 초기화:String[]a=newString[]{"apple","banana","melon"};
실행 시 main()메소드의 인수로 값이 넘어옴
인수 지정하는 방법-[명령 프롬프트]에서 실행 시 지정하는 방법
-[이클립스]에서 지정하는 방법
2차원 배열이상
종류-2차원 배열 : 행 N개, 열 N개(1차원 배열이 N개)
-3차원 배열 : 층 N개, 행 N개, 열 N개(2차원 배열이 N개)
2차원 배열 : 2차원 배열 선언 및 생성 후 배열 요소에 초기값 지정
2차원 가변 배열 : 행의 개수는 정해져 있고, 열의 개수가 가변임
2차원 배열의 length 멤버 변수(필드)
-배열이름.length 2차원 배열의 행의 개수
-배열이름[행].length:2차원 배열의 열의 개수
public class ArrayBasic {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 배열의 선언
int a[];
int[] b;
// 배열의 생성
int c[] = new int[5];
int[] d = new int[5];
int e[];
e = new int[5];
// 배열 초기화
int[] f = new int[5];
f[0] = 10;
f[1] = 20;
f[2] = 30;
f[3] = 40;
f[4] = 50;
//int[] g = new int[5] { 10,20,30,40,50 }; // 오류발생
int[] g = new int[] { 10,20,30,40,50 };
int[] h = { 10,20,30,40,50 };
int[] i;
i = new int[] { 10,20,30,40,50 };
// i = {10,20,30,40,50}; // 오류발생
// 배열요소의 개수
System.out.println("배열 i의 요소 개수는 "+i.length);
int[] j = new int[] { 10, 20, 30, 40, 50 };
j[5] = 100; // 실행 오류 발생
}
}
import java.util.Scanner;
public class ArrayFor {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s = new Scanner(System.in);
// 배열의 값 출력하기
System.out.println("[배열의 값 출력하기]");
int[] a = { 1,2,3,4,5 };
//for (int i = 0; i < 5; i++) {
for (int i = 0; i < a.length; i++) {
System.out.println("a["+i+"] = "+a[i]);
}
// 배열의 값 저장하기
System.out.println("[배열의 값 저장후 출력하기]");
for (int i = 0; i < a.length; i++) {
a[i] = (i + 1) * 10;
}
for (int i = 0; i < a.length; i++) {
System.out.println("a["+i+"] = "+a[i]);
}
// 배열의 합계와 평균 구하기
System.out.println("[배열의 합계와 평균 구하기]");
int[] arr = { 34, 10, 25, 71, 84 };
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i]; // sum = sum + arr[i];
}
System.out.println("합계 = "+sum+", 평균 = "+((double)sum / a.length));
// 2개 배열의 합계 배열 만들기
System.out.println("[2개 배열의 합계 배열 만들기]");
int[] arr1 = { 12, 32, 76, 51, 49 };
int[] arr2 = { 34, 56, 29, 54, 21 };
int[] arr3 = new int[5];
for (int i = 0; i < arr1.length; i++) {
arr3[i] = arr1[i] + arr2[i];
}
for (int i = 0; i < arr3.length; i++) {
System.out.println(arr1[i]+" + "+arr2[i]+" = "+arr3[i]);
}
// 입력받은 값의 짝수와 홀수의 합계 계산하기, 0입력 종료
System.out.println("[입력받은 값의 짝수와 홀수의 합계 계산하기, 0입력 종료]");
int[] total = { 0, 0 };
int input;
do {
System.out.print("숫자입력 : ");
input = s.nextInt();
total[input % 2] += input;
} while (input != 0);
System.out.println("짝수의 합 = "+total[0]+", 홀수의 합 = "+total[1]);
}
}
<Result>
[배열의 값 출력하기]
a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 4
a[4] = 5
[배열의 값 저장후 출력하기]
a[0] = 10
a[1] = 20
a[2] = 30
a[3] = 40
a[4] = 50
[배열의 합계와 평균 구하기]
합계 = 224, 평균 = 44.8
[2개 배열의 합계 배열 만들기]
12 + 34 = 46
32 + 56 = 88
76 + 29 = 105
51 + 54 = 105
49 + 21 = 70
[입력받은 값의 짝수와 홀수의 합계 계산하기, 0입력 종료]
숫자입력 : 5
숫자입력 : 5
숫자입력 : 4
숫자입력 : 3
숫자입력 : 2
숫자입력 : 0
짝수의 합 = 6, 홀수의 합 = 13
import java.util.Scanner;
public class ArrayString {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s = new Scanner(System.in);
System.out.println("[과일]");
String[] fruit = new String[] { "apple", "banana", "melon" };
for( int i=0; i<fruit.length; i++) {
System.out.print(fruit[i]+" ");
}
System.out.println();
System.out.println("[책]");
String[] book = new String[3];
book[0] = "수학책";
book[1] = "과학책";
book[2] = "소설책";
for( int i=0; i<book.length; i++) {
System.out.print(book[i]+" ");
}
System.out.println();
System.out.println("[드라마]");
String[] drama = new String[3];
drama[0] = new String("sunshine");
drama[1] = new String("doctor");
drama[2] = new String("things");
for( int i=0; i<drama.length; i++) {
System.out.print(drama[i]+" ");
}
System.out.println();
// 문자열 입력받아 배열에 넣기
String[] name = new String[5];
for( int i=0; i<name.length; i++) {
System.out.print((i+1)+"번째 이름을 입력하세요 : ");
name[i] = s.nextLine();
}
System.out.println("[입력한 이름]");
for( int i=0; i<name.length; i++) {
System.out.print(name[i]+" ");
}
System.out.println();
}
}
<Result>
[과일]
apple banana melon
[책]
수학책 과학책 소설책
[드라마]
sunshine doctor things
1번째 이름을 입력하세요 : 취미
2번째 이름을 입력하세요 : 몰라
3번째 이름을 입력하세요 : 어떤걸
4번째 이름을 입력하세요 : 넣을까
5번째 이름을 입력하세요 : 나도
[입력한 이름]
취미 몰라 어떤걸 넣을까 나도
public class ArrayMulti {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 2차원 배열 정의(선언,생성,초기화) 방법
int[][] a = new int[2][3];
a[0][0] = 1;
a[0][1] = 2;
a[0][2] = 3;
a[1][0] = 4;
a[1][1] = 5;
a[1][2] = 6;
int[][] b = new int[][] {
{ 1,2,3,4 },
{ 5,6,7,8 },
{ 9,10,11,12}
};
int[][] c = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} };
System.out.println("[2차원 배열 출력]");
for(int row=0; row<b.length; row++) {
for(int col=0; col<b[row].length; col++) {
System.out.print(b[row][col]+" ");
}
System.out.println();
}
// 2차원 가변 배열
int[][] d = new int[2][];
d[0] = new int[3];
d[1] = new int[4];
d[0][0] = 1;
d[0][1] = 2;
d[0][2] = 3;
d[1][0] = 4;
d[1][1] = 5;
d[1][2] = 6;
d[1][3] = 7;
int[][] e = new int[2][];
e[0] = new int[] { 1,2,3,4,5 };
e[1] = new int[] { 1,2,3 };
int[][] f = new int[][] { { 1,2,3,4,5,6 }, { 7,8,9,10 }, { 11,12,13,14,15 } };
System.out.println("[2차원 가변 배열 출력]");
for(int row=0; row<f.length; row++) {
for(int col=0; col<f[row].length; col++) {
System.out.print(f[row][col]+" ");
}
System.out.println();
}
}
}
<Result>
[2차원 배열 출력]
1 2 3 4
5 6 7 8
9 10 11 12
[2차원 가변 배열 출력]
1 2 3 4 5 6
7 8 9 10
11 12 13 14 15
1)3행*4열의 2차원 배열을 선언하기
2)2차원 배열의 값을 키보드로 입력받기
3)행과 열의 개수만큼의 1차원 배열을 만들어 행과 열의 합계를 계산
4)2차원 배열과 행과 열의 합계 배열을 출력
import java.util.Scanner;
public class ArrayTotal {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s = new Scanner(System.in);
int[][] arr = new int[3][4]; // 2차원 배열
int[] row_sum = new int[3]; // 행 합계 1차원 배열
int[] col_sum = new int[4]; // 열 합계 1차원 배열
System.out.println("[정수를 입력하세요]");
for(int row=0; row<arr.length; row++) {
for(int col=0; col<arr[row].length; col++) {
System.out.print("["+row+"]["+col+"] = ");
arr[row][col] = s.nextInt();
row_sum[row] += arr[row][col];
col_sum[col] += arr[row][col];
}
}
System.out.println("[2차원 배열(행합계,열합계)]");
for(int row=0; row<arr.length; row++) {
for(int col=0; col<arr[row].length; col++) {
System.out.print(arr[row][col]+" ");
}
System.out.println("("+row_sum[row]+")");
}
for(int col=0; col<col_sum.length; col++) {
System.out.print("("+col_sum[col]+") ");
}
}
}
<Result>
[정수를 입력하세요]
[0][0] = 10
[0][1] = 11
[0][2] = 12
[0][3] = 13
[1][0] = 20
[1][1] = 21
[1][2] = 22
[1][3] = 23
[2][0] = 30
[2][1] = 31
[2][2] = 32
[2][3] = 33
[2차원 배열(행합계,열합계)]
10 11 12 13 (46)
20 21 22 23 (86)
30 31 32 33 (126)
(60) (63) (66) (69)
```