본문 바로가기

개발자 이야기/JAVA

자바 배열에 대해 알아보자

지난 포스팅까지 해서 정말 기초적인 부분들을 정리했는데, 항상 공부할때마다 느끼지만 배열에서부터 난이도가 급격하게 상승하는 것 같다. 단순하게 배열만 보면 간단하지만, 깊게 들어가면 자료구조에 대해서도 공부해야하기 때문이다. 하지만 이번 포스팅에서는 그냥 배열에 대해서 간략하게 정리하려고 한다. 배열에 대해 더 상세한 내용의 포스팅은 나중에 자료구조를 공부하면서 따로 포스팅을 하려고 한다. 


배열은 정말정말 중요하다. 정말 많이 사용하기 때문이다. 배열을 간단하게 정의내려보자면, 같은 타입의 변수들을 하나로 묶는 것이라고 생각한다. 간단하게 로또를 예를 들어보자. 로또의 각 번호를 정수형 변수(int)를 사용하여 표현해보면(랜덤으로 짜야하지만 간단하게 임의의 숫자를 넣는다고 가정해보면)


int lotto1 = 2, lotto2 = 5, lotto3 = 23, ... , lotto6=24;


배열을 배우지 않았다면 이렇게 비효율적으로 여러 변수들을 사용해야 한다. 그리고 이 변수들을 가지고 다른 작업을 하려면 일일이 각 변수마다 작업을 실행시켜줘야 한다. 하지만 배열을 공부하면 굳이 이렇게 변수를 각각 선언할 필요가 없다. 배열을 이용해서 표현해보면


int lotto[] = {2, 5, 23, ... , 24};


이런식으로 간단하게 표현할 수 있다. 다만 배열을 사용하기 위해서는 조건이 있다. 바로 같은 타입의 값들이 들어가야한다는 것이다. 선언하는 방식이 일반 변수처럼 하기 때문이다. 




이런 식으로 말이다. int로 배열을 선언해야할 경우에는 배열 안에 int형 값만 넣어야 한다. 그리고 배열을 선언할 때는 변수 타입 뒤에 중괄호([])를 붙여주거나 변수명에 중괄호([])를 붙여주어야 한다. 배열을 생성한다는 것은 길이를 지정해주어 실제 자료의 저장공간을 생성한다는 것을 의미한다. 



이렇게 중괄호 안에 10을 넣으면 10칸의 배열을 생성할 수 있다. 특히 밑에 나온 것처럼 한 줄로 동시에 배열 선언과 생성이 가능하다.저렇게 배열을 생성하면,


i[0], i[1], i[2], ... , i[9] 


이렇게 10개가 만들어진다. 여기서 꼭 알아야할 점은 배열의 각 저장공간은 변수명[인덱스]로 이루어져있다. 인덱스라는 말을 정말 많이 쓰는데, 몇 번째 데이터를 말하는 지라고 생각하면 될 것 같다. 또 주의해야할 점, 인덱스는 0부터 시작한다는 것이다. 10칸의 배열을 만들었다고 해서 인덱스가 1부터 10까지 생성되는 것이 아닌 0부터 9까지 생성된다는 것이다. 그걸 꼭 알아야 나중에 반복문을 이용하여 배열에 작업을 할 경우 exception(ArrayIndexOutOfBoundsException)을 발생시키지 않을 것이다. 그럼 반복문을 통해서 배열에 데이터를 넣는 방법을 간단하게 살펴보자.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
package test;
 
import java.util.Arrays;
 
public class test {
    public static void main(String[] args) {
        int[] lotto = new int[6];
        for(int i=0; i<6; i++){
            lotto[i] = (int)(Math.random() * 45+ 1;
                        System.out.println(lotto[i] + ", "); 
        }
    }
}
//출력값 : 3, 35, 17, 31, 45, 43 (랜덤이라 경우에 따라 다른 수)
cs


위 코드는 random을 이용하여 간단하게 로또 번호를 받는 코드이다. 단순히 반복문을 통해서 배열에 데이터를 저장하는 것을 실행하는 코드이기 때문에 중복값을 체크하지 않았다. 코드를 보면 우선 lotto라는 int형 배열을 선언하였고 6칸의 배열이다. 즉 인덱스는 0부터 5까지 생성된다. 그래서 for문에 조건식을 0부터 5까지 돌도록 지정해주었다. 그래서 i가 인덱스가 되어 랜덤 값들이 배열에 들어가게 되는 것이다. 위 코드는 배열의 크기가 적기 때문에 조건식을 저렇게 줬는데, 배열의 크기가 큰 경우나 정확하게 알지 못하는 경우에는 length를 이용하여 표현하면 된다. 위의 코드에서는 lotto.length라고 표현하면 알아서 길이만큼 for문을 돌 수 있도록 조건식을 사용할 수 있다.




이렇게 해서 간략하게 배열에 대해서 정리해봤다. 다차원 배열도 있지만 이번 포스팅에서는 간단하게 일차원 배열만 정리했다. 다음 포스팅부터는 객체가 나오는데 어렵기 때문에 확실하게 이해하고 정리하는 포스팅을 해야겠다.