배열: 자료형이 같은 자료 여러 개를 한 번에 관리하는 연속으로 나열된 자료구조
자료형[] 배열이름 = new 자료형[개수];
자료형 배열이름[] = new 자료형[개수];
int[] studentIDs = new int[10]; // int형 요소가 10개인 배열 선언
int[] studentIDs2 = new int[]{101,102,103}; // 선언+초기화, 개수 생략
// 초기화 동시 진행 시, 개수 쓰면 오류 발생
int[] studentIDs3 = new int[3]{101,102,103}; // 오류 발생
int[] studentIDs4 = {101,102,103}; // 선언+초기화, 개수 생략
int[] studentIDs5; // 배열 자료형 선언
// 선언과 초기화 따로 진행시, new int[] 생략 불가
studentIDs5 = new int[] {101, 102, 103};
ex) A부터 Z까지 저장한 후 각 요소 값을 알파벳 문자와 정수 값(아스키 코드 값)으로 출력
char[] alphabets = new char[26];
char ch = 'A';
for(int i=0;i<alphabets.length;i++, ch++){
alphabets[i] = ch;
}
for(char al : alphabets){
System.out.println(al+","+(int)al);
}
package array;
public class Book {
private String bookName;
private String author;
public Book() {}
public Book(String bookName, String author){
this.bookName = bookName;
this.author = author;
}
public String getBookName(){
return bookName;
}
public void setBookName(String bookName){
this.bookName = bookName;
}
public String getAuthor(){
return author;
}
public void setAuthor(String author){
this.author = author;
}
public void showBookInfo(){
System.out.println(bookName+","+author);
}
}
package array;
public class BookArray {
public static void main(String[] args){
Book[] library = new Book[3]; // Book 클래스형으로 객체 배열 생성
library[0] = new Book("태백산맥", "조정래");
library[1] = new Book("데미안", "헤르만 헤세");
library[2] = new Book("토지", "박경리");
for(Book book: library){
book.showBookInfo();
/**
* 태백산맥,조정래
* 데미안,헤르만 헤세
* 토지,박경리
*/
}
for (Book book : library) {
System.out.println(book);
/**
* array.Book@279f2327
* array.Book@2ff4acd0
* array.Book@54bedef2
*/
}
}
}
System.arraycopy(src, srcPos, dest, destPos, length)
int[] array1 = {10, 20, 30, 40, 50};
int[] array2 = {1, 2, 3, 4, 5};
System.arraycopy(array1, 0, array2, 1, 4);;
for(int arr : array2){
System.out.println(arr);
/**
* 1
* 10
* 20
* 30
* 40
*/
}
package array;
public class BookArray {
public static void main(String[] args){
Book[] book1 = new Book[3];
Book[] book2 = new Book[3];
book1[0] = new Book("태백산맥", "조정래");
book1[1] = new Book("데미안", "헤르만 헤세");
book1[2] = new Book("토지", "박경리");
System.arraycopy(book1, 0, book2, 0, 3);
for(Book b : book2){
b.showBookInfo();
/**
* 태백산맥,조정래
* 데미안,헤르만 헤세
* 토지,박경리
*/
}
}
}
package array;
public class BookArray {
public static void main(String[] args){
Book[] book1 = new Book[3];
Book[] book2 = new Book[3];
book1[0] = new Book("태백산맥", "조정래");
book1[1] = new Book("데미안", "헤르만 헤세");
book1[2] = new Book("토지", "박경리");
System.arraycopy(book1, 0, book2, 0, 3);
for(Book b : book2){
b.showBookInfo();
}
book1[0].setBookName("나목"); // book1 배열의 첫 번째 요소 값 변경
book1[0].setAuthor("박완서");
System.out.println("=== bookArray1 ===");
for(Book b1: book1){
b1.showBookInfo();
}
System.out.println("=== bookArray2 ===");
for(Book b2: book2){
b2.showBookInfo();
}
}
}
package array;
public class BookArray {
public static void main(String[] args){
Book[] book1 = new Book[3];
Book[] book2 = new Book[3];
book1[0] = new Book("태백산맥", "조정래");
book1[1] = new Book("데미안", "헤르만 헤세");
book1[2] = new Book("토지", "박경리");
// 디폴트 생성자로 book2 배열 인스턴스 생성
book2[0] = new Book();
book2[1] = new Book();
book2[2] = new Book();
for(int i=0;i<book1.length;i++){
book2[i].setBookName(book1[i].getBookName());
book2[i].setAuthor(book1[i].getAuthor());
}
for(Book b : book2){
b.showBookInfo();
}
book1[0].setBookName("나목"); // book1 배열의 첫 번째 요소 값 변경
book1[0].setAuthor("박완서");
System.out.println("=== bookArray1 ===");
for(Book b1: book1){
b1.showBookInfo();
}
System.out.println("=== bookArray2 ===");
for(Book b2: book2){
b2.showBookInfo();
}
}
}
자료형[][] 배열이름 = new 자료형[행개수][열개수]
int[][] arr = new int[2][3]; // 2x3 배열
int[][] arr2 = {{1,2,3}, {4,5,6}}; // 배열 선언 및 초기화
기존의 배열은 항상 배열 길이 정하고 시작하므로, 중간에 배열 길이 변경할 수 없어서 코드 수정해야함!
→ 자바는 객체 배열 좀 더 쉽게 사용할 수 있도록 객체 배열 클래스ArrayList
제공
import java.util.ArrayList;
문장 반드시 써주고 사용해야함!메서드 | 설명 |
---|---|
boolean add(E e) | 요소 하나를 배열에 추가(E는 요소의 자료형) |
int size() | 배열에 추가된 요소 전체 개수 반환 |
E get(int index) | 배열의 index 위치에 있는 요소 값 반환 |
E remove(int index) | 배열의 index 위치에 있는 요소 값 제거하고 그 값 반환 |
boolean isEmpty() | 배열이 비어있는지 확인 |
ArrayList<E> 배열이름 = new ArrayList<E>();
package array;
import java.util.ArrayList;
public class BookArray {
public static void main(String[] args){
ArrayList<Book> library = new ArrayList<Book>();
library.add(new Book("태백산맥", "조정래"));
library.add(new Book("데미안", "헤르만 헤세"));
library.add(new Book("토지", "박경리"));
for(Book book: library){
book.showBookInfo();
}
}
}