[JAVA]배열 (Array)?

2 분 소요

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 배열에 저장된 값이 순서대로 출력되는 것을 볼수 있습니다.

댓글남기기