[JAVA]배열 (Array)?
Array?
자료를 순차적으로 관리하는 구조, 배열
학교에 학생이 100명이 있습니다. 학생들 100명의 학번을 어떻게 관리할까요? 학번의 자료형을 정수라고 할때,
int studentID1;
int studentID2;
...
...
이렇게 변수 100개를 선언하게 된다면 굉장히 코드가 길어지고 관리가 힘들어집니다. 이 때 사용하는 자료형이 배열(array)입니다. 배열을 사용하면 자료형이 같은 자료 여러개를 한번에 관리할 수 있습니다.
배열의 선언
배열을 사용하려면 먼저 배열을 선언해야합니다. 배열도 변수와 마찬가지로 자료형을 함께 선언합니다.
int[] studentID = new int[100]
위 코드와 같이 학생 아이디 100개의 배열을 만들어서 관리할 수 있습니다. 배열을 이루는 각각의 데이터들을 배열 요소라고 합니다.
배열의 초기화
자바에서 배열을 선언하면 그와 동시에 각 요소의 값이 초기화 됩니다. 자료형에 따라 정수는 0, 실수는 0.0, 객체 배열은 null로 초기화되며, 다음처럼 배열의 선언과 동시에 초기화 할 수도 있습니다.
int[] studentID = new int[] {1, 2, 3} //1, 2, 3의 값이 인덱스 0,1,2에 초기화, 배열의 갯수는 입력하지 않음
int[] studentID = {1, 2, 3} //선언과 동시에 초기화 시 new int[] 생략 가능
위와 같이 선언과 동시에 초기화 할 때는 new int[]를 생략할 수 있지만, 배열을 먼저 선언하고 초기화하는 경우에는 생략할 수 없습니다.
배열 사용
선언한 배열의 각 요서에 값을 넣을 때나 배열 요소에 있는 값을 가져올 때는 []를 사용합니다.
int[] studentID = new int[10];
studentID[0] = 10;
for문을 활용하여 배열 초기화하기
package array;
public class ArrayTest {
public static void main(String[] args) {
int[] arrayNum = new int[10];
for(int i=0; i < arrayNum.length; i++){
arrayNum[i] = i;
System.out.println(arrayNum[i]);
}
객체 배열 만들기
참조 자료형으로 선언하는 객체 배열이란, 동일한 기본 자료형 변수 여러개를 배열로 사용할 수 있듯 참조 자료형 변수도 여러개를 배열로 사용할 수 있습니다. 객체 배열은 int나 double등의 기본 자료형 배열과 사용 방법이 다릅니다.
pacakge array;
public class Book {
private String bookName;
public Book(String bookName) {
this.bookName = bookName;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookNanme = bookName;
}
public void showBookInfo() {
System.out.println(bookName);
}
}
위 코드와 같이 Book 클래스를 만들고, 책의 이름을 설정하고 보여주는 메소드를 만들었습니다. 도서관에 책이 5권 있다고 가정하고 Book 클래스로 책 5권의 객체 배열을 만들어보겠습니다.
public array;
public class BookArray {
public static void main(String[] args){
Book[] library = new Book[5]; //Book 클래스 객체 배열 5개 생성
library[0] = new Book("JAVA의 정석");
library[1] = new Book("윤성우의 열혈 자바");
library[2] = new Book("이것이 JAVA다");
library[3] = new Book("난 정말 JAVA를 공부한 적이 없다구요");
library[4] = new Book("Do it! 자바");
for(int i=0; i<library.length; i++) {
library[i].showBookInfo();
for(int i=0; i<library.length; i++) {
System.out.println(library[i]);
배열의 각 요소에 Book 인스턴스를 만들어 데이터를 저장하고, showBookInfo 메소드로 책의 이름을 출력합니다. library[i]를 출력하게 되면 책의 이름이 아닌 Book 인스턴스를 저장한 메모리의 주소값이 출력됩니다.
향샹된 for문과 배열
JAVA 5버전부터 제공되는 향상된 for문은 배열의 처음부터 끝까지 모든 요소를 참조할 때 사용할 수 있습니다. 향상된 for문은 배열 요소 값을 순서대로 하나씩 가져와서 변수에 대입합니다. 따로 초기화와 종료 조건이 없기 때문에 모든 배열의 시작 요소부터 끝 요소까지 실행합니다.
package array;
public class EnhancedForLoop {
public static void main(String[] args) {
String[] strArray = {"Java", "JSP", "Spring"};
for(String web : strArray) {
System.out.println(web);
}
}
}
*console*
Java
JSP
Spring
위 예제처럼 strArray 배열에 문자열 3개를 저장하고 향상된 for문으로 web 변수에 순서대로 대입합니다. web변수를 출력하면 strArray 배열에 저장된 값이 순서대로 출력되는 것을 볼수 있습니다.
댓글남기기