동일한 자료형을 순차적으로 관리하는 가장 기본적인 자료 구조
int[] arr = new int[10];
int arr[] = new int[10];
위의 배열을 생성한 것으로 배열의 길이와 인덱스 번호를 알아보기
배열의 길이(length) : 10
배열의 인덱스(index) 번호 : 0 ~ 9(length-1)
* 모든 배열의 첫 번째 인덱스는 0
int[] arr = new int[10]; // 10의 크기를 가진 배열 arr 생성
int total = 0;
// arr 배열의 길이값 마다 1~10까지의 값을 넣기
int num = 1;
for(int i = 0; i < arr.length; i++) {
arr[i] = num;
num++;
}
// arr 배열에 넣어진 값 출력
for(int i = 0; i < arr.length; i++) {
total += arr[i];
System.out.println(arr[i]);
}
// arr 배열 값의 총 합 출력
System.out.println("배열 값의 총 합 : " + total);
char alpha[] = new char[26]; // 26의 크기를 가진 alpha 배열 생성
char upper = 'A';
for (int i = 0; i < alpha.length; i++) {
alpha[i] += upper;
upper++; // A-Z까지 배열에 저장하기 위해 upper 값 증가
// A-Z까지 저장된 alpha 문자 배열 출력
System.out.println(alpha[i]);
}
int[] arr = new int[10];
int[] arr1 = {10, 20, 30, 40, 50};
int[] arr2 = {1, 2, 3, 4, 5};
// arr1배열에서 0번째 부터 3까지 arr2배열 1번째에 복사
System.arraycopy(arr1, 0, arr2, 1, 3);
for(int i = 0; i< arr2.length; i++) {
System.out.println(arr2[i]);
}
// 결과 //
1
10
20
30
5
// Book 인스턴스 생성 후 제목 변수, 생성자, Getter/Setter 메서드 작성
public class Book {
private String title;
public Book(String title) {
this.title = title;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public void bookInfo() {
System.out.println(title);
}
}
// Book 클래스 객체 배열 library 5개를 생성
Book[] library = new Book[5];
library[0] = new Book("이것이 자바다");
library[1] = new Book("자바 프로그래밍");
library[2] = new Book("시나공 정보처리기사 실기");
library[3] = new Book("코드로 배우는 스프링 웹프로젝트");
library[4] = new Book("자바의 정석");
for(int i = 0; i < library.length; i++) {
// 배열에 담겨있는 인스턴스의 주소 값
System.out.println(library[i]);
// 배열에 담겨있는 인스턴스의 주소 값과 bookInfo() 메서드를 통해 title 출력
library[i].bookInfo();
}
// 결과 //
OOP_LEC.Book@4554617c
이것이 JAVA다
---------------------
OOP_LEC.Book@74a14482
자바 프로그래밍
---------------------
OOP_LEC.Book@1540e19d
시나공 정보처리기사 실기
---------------------
OOP_LEC.Book@677327b6
코드로 배우는 스프링 웹프로젝트
---------------------
OOP_LEC.Book@14ae5a5
자바의 정석
---------------------
배열 요소의 처음부터 끝까지 모든 요소를 참조 할 때 편리한 반복문 (JAVA 5 버전 부터 지원)
for(변수 : 배열) {
반복 실행문;
}
// ex)
for(Book book : library) {
book.bookInfo();
}
2차원 이상의 배열
지도, 게임, 평면이나 공간을 구현할 때 사용
2차원 배열의 길이(length)에 대한 이해
int[][] arr = { {1, 2, 3}, {4, 5, 6, 7} };
// 배열의 전체 길이 => 행의 개수 2 출력, 행의 개수로 2차원 배열임을 확인 가능
System.out.println(arr.length);
System.out.println(arr.length[0]); // 배열의 첫번째 행의 개수 => 1,2,3 = 3 출력
System.out.println(arr.length[1]); // 배열의 두번째 행의 개수 => 4,5,6,7 = 4 출력
// 각 행을 기준으로 열을 돌리면 됨
// 이중 for문
for(int i = 0; i < arr.length; i++) { // 행을 기준으로
for(int j = 0; j < arr[i].length; j++){ // 각 행의 길이만큼
System.out.printf(arr[i][j] +" ");
}
System.out.println();
}
// 결과 //
1 2 3
4 5 6 7
ArrayList의 주요 메서드
메서드 | 설명 |
---|---|
boolean add(E e) | 요소 하나를 배열에 추가, E는 요소의 자료형을 의미 |
boolean isEmpty() | 배열이 비어 있는지 확인 |
int size() | 배열에 추가된 요소 전체 개수를 반환 |
E get(int index) | 배열의 index 위치에 있는 요소 값을 반환 |
E remove(int index) | 배열의 index 위치에 있는 요소 값을 제거 후 그 값을 반환 |
// 어떤 클래스를 배열의 요소로 쓸 것인지 지정해 주는것 -> ex)String
// 어떤 타입의 객체로 배열을 만들 것인가?
ArrayList<String> list = new ArrayList<String>();
// list 요소 추가 : add() 메서드
list.add("a");
list.add("b");
list.add("c");
// list의 요소가 들어있는 총 개수 : size() 메서드
// 배열의 length와 size의 차이
// 배열은 길이는 10개 element값은 3개 들어가도 길이는 10
// size는 정확히 element가 들어간 갯수 만 의미 3개
// 출력1
for(int i = 0; i < list.size(); i++) {
String str = list.get(i);
System.out.println(str);
}
// 출력2 - 향상된 for문
for(String s : list) {
System.out.println(s);
}
// 결과 //
a
b
c
[참고]
Object는 모든 클래스의 최상위 클래스
ArrayList<> 지정 안할시 Object형으로 들어가게됨
Object 클래스는 나중에 다시 자세하게 정의