동일한 자료형의 순차적 자료 구조
인덱스 연산자를 이용하여 빠른 참조가 가능
물리적 위치와 논리적 위치가 동일
배열의 순서는 0부터 시작
자바에서는 객체 배열을 구현한 ArrayList를 많이 사용
ArrayTest.java
public class ArrayTest {
public static void main(String[] args) {
int[] arr = new int[10];
int total = 0;
for(int i = 0,num = 1; i < arr.length ; i++){ //for로 대입하는 경우
arr[i] = num++;
}
for (int num : arr){
total += num;
}//num의 처음부터 끝까지 더하는 for
System.out.println(total);
==================================================================================================
int[] arr = new int[] {1,2,3,4,5,6,7,8,9,10} ; //직접 대입하는 경우
int total = 0;
for (int num : arr){
total += num;
}//num의 처음부터 끝까지 더하는 for
System.out.println(total);
}
}
CharArrayTest.java
public class CharArrayTest {
public static void main(String[] args) {
char[] alphabets = new char[26];
char ch = 'A';
for(int i = 0; i < alphabets.length ; i++){
alphabets[i] = ch++;
}
for (char alpha : alphabets){
System.out.println(alpha + ", " + (int)alpha );
}
}
}
BookTest.java
public class BookTest {
public static void main(String[] args) {
Book[] library = new Book[5];
// for (int i = 0; i < library.length ; i++){
// System.out.println(library[i]);
// } 하면 다 널 나옴
library[0] = new Book("태백산맥1", "조정래");
library[1] = new Book("태백산맥2", "조정래");
library[2] = new Book("태백산맥3", "조정래");
library[3] = new Book("태백산맥4", "조정래");
library[4] = new Book("태백산맥5", "조정래");
for (Book book : library){
System.out.println(book);
book.showInfo();
}
}
}
ObjectCopyTest.java
public class ObjectCopyTest {
public static void main(String[] args) {
Book[] library = new Book[5];
Book[] copyLibrary = new Book[5];
library[0] = new Book("태백산맥1", "조정래");
library[1] = new Book("태백산맥2", "조정래");
library[2] = new Book("태백산맥3", "조정래");
library[3] = new Book("태백산맥4", "조정래");
library[4] = new Book("태백산맥5", "조정래");
System.arraycopy(library, 0, copyLibrary, 0, 5);
//library에서 0부터 복사해서 copyLibrary에다가 0부터 5개 붙여넣어라
System.out.println("=== library ===");
for (Book book : library){
System.out.println(book);
book.showInfo();
}
System.out.println("=== copy library ===");
for (Book book : copyLibrary){
System.out.println(book);
book.showInfo();
}
}
}
그 결과
=== library ===
ch21.Book@64616ca2
태백산맥1, 조정래
ch21.Book@2cb4c3ab
태백산맥2, 조정래
ch21.Book@13c78c0b
태백산맥3, 조정래
ch21.Book@12843fce
태백산맥4, 조정래
ch21.Book@3dd3bcd
태백산맥5, 조정래
=== copy library ===
ch21.Book@64616ca2
태백산맥1, 조정래
ch21.Book@2cb4c3ab
태백산맥2, 조정래
ch21.Book@13c78c0b
태백산맥3, 조정래
ch21.Book@12843fce
태백산맥4, 조정래
ch21.Book@3dd3bcd
태백산맥5, 조정래
완벽히 똑같고 주소까지 같은 것을 알 수 있다
library[0].setAuthor("박완서");
library[0].setTitle("나목");
System.out.println("=== library ===");
for (Book book : library){
System.out.println(book);
book.showInfo();
}
System.out.println("=== copy library ===");
for (Book book : copyLibrary){
System.out.println(book);
book.showInfo();
}
}
결과
=== library ===
ch21.Book@64616ca2
나목, 박완서
ch21.Book@2cb4c3ab
태백산맥2, 조정래
ch21.Book@13c78c0b
태백산맥3, 조정래
ch21.Book@12843fce
태백산맥4, 조정래
ch21.Book@3dd3bcd
태백산맥5, 조정래
=== copy library ===
ch21.Book@64616ca2
나목, 박완서
ch21.Book@2cb4c3ab
태백산맥2, 조정래
ch21.Book@13c78c0b
태백산맥3, 조정래
ch21.Book@12843fce
태백산맥4, 조정래
ch21.Book@3dd3bcd
태백산맥5, 조정래
주소가 같기 때문에 모두 같이 바뀌어 버린다 = 얕은 복사
public class ObjectCopyTest {
public static void main(String[] args) {
Book[] library = new Book[5];
Book[] copyLibrary = new Book[5];
library[0] = new Book("태백산맥1", "조정래");
library[1] = new Book("태백산맥2", "조정래");
library[2] = new Book("태백산맥3", "조정래");
library[3] = new Book("태백산맥4", "조정래");
library[4] = new Book("태백산맥5", "조정래");
copyLibrary[0] = new Book();
copyLibrary[1] = new Book();
copyLibrary[2] = new Book();
copyLibrary[3] = new Book();
copyLibrary[4] = new Book();
for (int i = 0; i < library.length; i++){
copyLibrary[i].setAuthor(library[i].getAuthor());
copyLibrary[i].setTitle(library[i].getTitle());
}
library[0].setAuthor("박완서");
library[0].setTitle("나목");
System.out.println("=== library ===");
for (Book book : library){
System.out.println(book);
book.showInfo();
}
System.out.println("=== copy library ===");
for (Book book : copyLibrary){
System.out.println(book);
book.showInfo();
}
}
}
그 결과
=== library ===
ch21.Book@64616ca2
나목, 박완서
ch21.Book@2cb4c3ab
태백산맥2, 조정래
ch21.Book@13c78c0b
태백산맥3, 조정래
ch21.Book@12843fce
태백산맥4, 조정래
ch21.Book@3dd3bcd
태백산맥5, 조정래
=== copy library ===
ch21.Book@97e1986
태백산맥1, 조정래
ch21.Book@26f67b76
태백산맥2, 조정래
ch21.Book@153f5a29
태백산맥3, 조정래
ch21.Book@7f560810
태백산맥4, 조정래
ch21.Book@69d9c55
태백산맥5, 조정래
다른 주소를 갖고 수정 사항이 반영되지 않은 것을 알 수 있다
public class TwoDimensionTest {
public static void main(String[] args) {
int[][] arr = {{1,2,3}, {1,2,3,4}};
int i, j;
for(i = 0 ; i < arr.length ; i++){ //arr.length는 행의 길이
for (j = 0 ; j < arr[i].length ; j++ ){
System.out.print(arr[i][j] + ",");
}
System.out.println("\t" + arr[i].length); //arr[i].length는 i 행의 열의 길이
}
}
}
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<Book> library = new ArrayList<>();
library.add(new Book("태백산맥1", "조정래"));
library.add(new Book("태백산맥2", "조정래"));
library.add(new Book("태백산맥3", "조정래"));
library.add(new Book("태백산맥4", "조정래"));
library.add(new Book("태백산맥5", "조정래"));
for (int i = 0 ; i < library.size() ; i++){
library.get(i).showInfo();
}
}
}
1001학번 Lee와 1002학번 Kim, 두 학생이 있습니다.
Lee 학생은 국어와 수학 2과목을 수강했고, Kim 학생은 국어, 수학, 영어 3 과목을 수강하였습니다.
Lee 학생은 국어 100점, 수학 50점입니다.
Kim 학생은 국어 70점, 수학 85점, 영어 100점입니다.
Student와 Subject 클래스를 만들고 ArrayList를 활용하여 두 학생의 과목 성적과 총점을 출력하세요
Student 클래스
public class Student {
public int studentID;
public String studentName;
ArrayList<Subject> subjectList;
public Student(int studentID, String studentName){
this.studentID = studentID;
this.studentName = studentName;
subjectList = new ArrayList<Subject>();
}
public void addSubject(String name, int score) {
Subject subject = new Subject();
subject.setName(name);
subject.setScorePoint(score);
subjectList.add(subject);
}
public void showStudentInfo() {
int total = 0;
for (Subject subject : subjectList) {
total += subject.getScorePoint();
System.out.println(studentName + "학생의 " + studentName + " 과목의 성적은 " + subject.getScorePoint() + " 입니다.");
}
System.out.println(studentName + "학생의 총점은 " + total + "점 입니다.");
}
}
public class Subject {
private String name;
private int scorePoint;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScorePoint() {
return scorePoint;
}
public void setScorePoint(int scorePoint) {
this.scorePoint = scorePoint;
}
}
public class StudentTest {
public static void main(String[] args) {
Student studentLee = new Student(1001, "Lee");
studentLee.addSubject("국어", 100);
studentLee.addSubject("수학", 50);
Student studentKim = new Student(1002, "Kim");
studentKim.addSubject("국어", 70);
studentKim.addSubject("수학", 85);
studentKim.addSubject("영어", 100);
studentLee.showStudentInfo();
System.out.println("======================================");
studentKim.showStudentInfo();
}
}