이번 학습목표는 여러 개의 데이터를 다루는 배열(array)을 학습하는 것이 목적이다.
하나의 자료형과 여러 개의 자료형의 비교
자료형 변수 | 자료형[ ] 변수; |
---|---|
int : 정수한개 | int [ ] : 정수 여러개 |
int : a; | int [ ] a; |
[문제] Q. [정수 3]개를 저장 할 [변수를 선언]하고 모두 10을 저장하시요.
public class ArrayBasicTest {
public static void main(String[] args) {
int a, b, c;
int sum;
a = 10;
b = 10;
c = 10;
sum = a+b+c;
System.out.println("sum = " + sum);
}
}
문제점 : 데이터의 수가 늘어나면? => 데이터처리가 복잡
그렇다면? 어떤 방법이 있을까?
먼저 정수 3개를 저장 할 기억공간을 만드는 방법을 생각해보자
[출처 : 박매일 => 패스트캠퍼스 Java 학습]
Q. 정수 5개를 저장 할 배열을 생성하시요.(ArrayMake.java)
public class ArrayMakeTest {
public static void main(String[] args) {
int [] a = new int[5];
a[0] = 10;
a[1] = 10;
a[2] = 10;
a[3] = 10;
a[4] = 10;
System.out.println(a[0]);
System.out.println(a[1]);
System.out.println(a[2]);
System.out.println(a[3]);
System.out.println(a[4]);
System.out.println("\n"
+ "위 형식으로 하면 장점이 없다." + "\n"
+ "그러므로 반복문을 사용하자." + "\n");
System.out.println("\n" +"------------------------------" + "\n");
System.out.println("반복문(for, while)" + "\n");
for (int i=0; i<a.length; i++){
a [i] = 10;
System.out.println(a[i]);
}
Q. [책] 3권을 저장 할 [배열을 생성]히고 책 3권의 데이터를 저장하고 출력하시요.
Book_[] books = new Book_[3]; // 책 3권을 저장하 배열을 생성
books[0] = new Book_();
books[0].title = "java";
books[0].price = 30000;
books[0].company = "한빛";
books[0].author = "공상욱";
books[0].page = 500;
books[0].isbn = "11889900";
System.out.print(books[0].title + books[0].price + books[0].company + books[0].author + books[0].page + books[0].isbn + "\n");
books[1] = new Book_();
books[1].title = "Java";
books[1].price = 45000;
books[1].company = "한빛";
books[1].author = "공배";
books[1].page = 400;
books[1].isbn = "11338800";
System.out.print(books[1].title + books[1].price + books[1].company + books[1].author + books[1].page + books[1].isbn + "\n");
books[2] = new Book_();
books[2].title = "JAVA";
books[2].price = 60000;
books[2].company = "한빛";
books[2].author = "공열";
books[2].page = 5000;
books[2].isbn = "11667700";
System.out.print(books[2].title + books[2].price + books[2].company + books[2].author + books[2].page + books[2].isbn + "\n" + "\n");
for (int i = 0; i<books.length; i++){
System.out.print(books[i].title + books[i].price + books[i].company + books[i].author + books[i].page + books[i].isbn + "\n");
}
}
}
1Q. 정수 5개를 저장 할 배열을 생성하고 모든 원소에 10을 저장하세요.
2Q. 정수 5개를 [배열에 초기화]하고 index 0번째와 index 3번째 값을 더하여 출력하시요
3Q. 아래의 char[] 배열에 APPLE 문자가 저장되어 있다.
public static void main(String[] args) {
// 1Q. 정수 5개를 저장 할 배열을 생성하고 모든 원소에 10을 저장하세요.
float [] f = new float[5];
f[0] = 10.5f;
f[1] = 15.5f;
f[2] = 16.5f;
f[3] = 17.5f;
f[4] = 18.5f;
for (int i = 0; i<f.length; i++){
System.out.println(f[i]);
}
// 2Q. 정수 5개를 [배열에 초기화]하고 index 0번째와 index 3번째 값을 더하여 출력하시요
int[] a = {10,20,30,40,50};
for (int i = 0; i<a.length; i++){
System.out.println(a[i]);
}
int sum = a[0] + a[3];
System.out.println("sum = " + sum);
System.out.println(a.length);
float[] b = new float[3];
System.out.println(b[0]);
System.out.println(b[1]);
System.out.println(b[2]);
// 3Q. 아래의 char[] 배열에 APPLE 문자가 저장되어 있다.
// 배열을 초기화하는 방법(실습)
// 대문자로 된 APPLE 소문자 apple 출력하시오.
char[] c = {'A','P','P','L','E'};
for (int i = 0; i<c.length; i++){
System.out.print((char)(c[i]+32));
}
}
}
기본배열과 객체배열(실습)
Q. 영화3 편을 저장 할 [배열을 생성]하고 영화 3편의 테이터를 저장하고 출력하세요
public class ObjectArrayExam {
public static void main(String[] args) {
Movie_[] m = new Movie_[3];
m[0] = new Movie_();
m[0].mtitle = "A영화";
m[0].mmajor = "공매일";
m[0].mtime = 160;
m[0].mlevel = 15;
m[0].mday = "2023-05-23";
m[1] = new Movie_();
m[1].mtitle = "B영화";
m[1].mmajor = "공매";
m[1].mtime = 150;
m[1].mlevel = 16;
m[1].mday = "2023-05-23";
m[2] = new Movie_();
m[2].mtitle = "C영화";
m[2].mmajor = "공일";
m[2].mtime = 120;
m[2].mlevel = 14;
m[2].mday = "2023-05-23";
// 반복문 사용
for (int i = 0; i<m.length; i++){
System.out.println(m[i].mtitle + "\t" + m[i].mmajor + "\t" + m[i].mtime + "\t" + m[i].mlevel + "\t" + m[i].mday );
}
}
}
이미지를 표현하는 2차원 배열
Q. 행(row),열(column)로 데이터 저장하기(2차원 배열, 테이블구조, 행렬)(TwoDimArrayTest.java)
public class TwoDimArrayTest {
public static void main(String[] args) {
// Q. 2행 4열의 [정수형] [배열을 생성]하세요.
int[][] a = new int[2][4];
a[0][0] = 10;
a[0][1] = 20;
a[0][2] = 30;
a[0][3] = 40;
a[1][0] = 50;
a[1][1] = 60;
a[1][2] = 70;
a[1][3] = 80;
System.out.println(a[0][0] + "\t" + a[0][1] + "\t" + a[0][2] + "\t" + a[0][3] +
"\t" + a[1][0] + "\t" + a[1][1] + "\t" + a[1][2] + "\t" + a[1][3]);
for (int i = 0; i<a.length; i++){
for (int j = 0; j<a[i].length; j++){
System.out.print(a[i][j]);
}
}
}
}
Quiz 1 . 동일한 데이터를 연속적으로 여러 개 저장할 수 있는 자료구조를 무엇이라고 하는가? → 배열(Array)
Quiz 2 . 배열의 길이를 구하는 속성을 쓰세요. → length
Quiz 3 . 3행 4열의 실수형 배열을 생성하는 코드를 작성하세요. → float[ ][ ]f=newfloat[3][4];
Quiz 4 . int[][] x=new int[3][5]; 주어진 배열에서 x.length 의 값과 x[0].length 의 값을 쓰세요. → 3, 5
Quiz 5 . int[][] a={{1,2,3,4},{5,6,7,8}}; 주어진 배열에서 a[1][3]의 값을 얼마인가? →8
Quiz 6 . Book[ ] b=new Book[3]; 주어진 배열 처럼 객체를 저장하는 배열을 무슨 배열이라고 하는가? → 객체배열(Object Array)