JAVA 배열이 뭔가요?

koom·2021년 7월 2일
0

JAVA

목록 보기
9/13

📚 배열이란 뭘까요?

사전을 찾아보니 위와 같은 정의가 나오는군요.
저는 뭔가 책꽂이에 책이 착착착 정리되어 있는 이미지가 그려집니다.

🤔 그럼 배열은 왜 만들었을까요? 뭔가 이유가 있지 않을까요?


생각을 해봅시다.

1, 2, 3, 4, 5 이런 값은 자료형 중 어느 타입에 담아야하죠?

int타입이죠.

그럼 변수 선언은 어떻게 하죠?

// 이렇게
int one = 1;
int two = 2;
int three = 3;
int four = 4;
int five = 5;

아니면

// 이렇게
int one = 1,
    two = 2,
    three = 3,
    four = 4,
    five = 5;

할 수 있겠죠.


그런데 이런 생각이 들었던 겁니다.
"🙄 근데 그냥 number라는 변수명에 1부터 5까지를 한 번에 다 담을 순 없나?
아니 뭔가 숫자 1을 가져오려면 one이라는 변수명도 기억해야하고, 2을 꺼내려면 two도 기억해야하고, 기억할 게 너무 많은데...?
어차피 다 숫자니까 그냥 한 군데 몰아놓으면 좋겠어. 그럼 오히려 더 편할 것 같은데? 숫자가 필요하면 다른데 갈 필요 없이 그냥 거기서 찾아보면 되잖아
"

그래서 배열이 탄생한거죠.


배열은 사용하면 이렇게 됩니다.

int[] number = {1, 2, 3, 4, 5};

짜잔~ 코드가 엄청 줄었죠?

근데 안보이던 게 보이네요? int뒤에 []이렇게 생긴 애가 있습니다.
저게 뭘까?
저게 바로 배열을 나타내는 표시 입니다.
"자, 저거 보이지? 이제부터 나는 배열이야"를 온 몸으로 표시 해 주고 있는것이죠.
배열은 1인 1방을 씁니다. 하나의 방, 하나의 칸에 하나의 값이 들어가는 것이죠.
아래처럼요.

그런데 약간 특이한 건 방의 이름이 조금 낯설 게 느껴집니다.
배열은 칸을 1부터 세는 게 아니라 0번부터 셉니다.
1의 값이 들어간 자리가 1번 칸이 아니라 0번 칸인 게 그 이유죠.

그럼 각 방에 살고 있는 값을 어떻게 가져올까요?
2라는 값을 가져오고 싶다면 number라는 책꽂이에 1번 칸을 찾으면 되겠죠?
그걸 코드로 썼을 때 number[1]이 되는 것 입니다.


그럼 배열은 int형만 쓸 수 있나요?
아닙니다. 모든 타입에 다 사용가능합니다.
짧게 String을 예로 들면

// 이렇게 선언할 수 있고
String[] text = {"자", "바", " ", "배열", " 공부 중 입니다"};


이런 구조로 들어가 있는 것이죠.


그리고 배열은 보통 for문과 함께 사용합니다.
0번째 인덱스(= 칸, 방, 위치)부터 마지막 인덱스를 한 번 쑥 훑는거죠.

public static void main(String[] args) {
		String[] text = { "자", "바", " ", "배열", " 공부 중 입니다" };

		// text.length가 의미하는 바는 "text 값 몇 개 들어있어요?" 입니다.
                // 지금은 5개 들어있으니까 text.length = 5가 됩니다.
		for (int i = 0; i < text.length; i++) {
        
                	// i = 0일 때, text[0] = "자" 출력
                	// i = 1일 때, text[1] = "바" 출력
                	// i = 2일 때, text[2] = " " 출력
                	// i = 3일 때, text[3] = "배열" 출력
                	// i = 4일 때, text[4] = "공부 중 입니다" 출력
			System.out.print(text[i]);
		}
	}

이렇게 하면 결과가

이렇게 보이실 겁니다.

❗ 혹시라도 결과가

이렇게 나오셨다면
// 이 부분이
System.out.print(text[i]);

// 이렇게 쓰여있지는 않은가
System.out.println(text[i]);

// 확인해보시면 됩니다!

위와 같은 경우는 입력할 값이 확실하게 있었습니다.
1,2,3,4,5
or
자,바, ,배열, 공부 중 입니다
처럼 말이죠.

그런데 이런 것도 가능합니다.
🏫 학교로 예를 들어볼까요?
이제 곧 ㅇㅇ초등학교에 입학하는 🙋‍♂️김배열 친구가 있습니다.
이 학교의 1학년은 총 5개반이 있습니다.
김배열 친구는 아직 반 배정을 받지 못했습니다.
그러나 한 가지 확실한 건 5반 중 어디 하나에는 김배열 친구가 속하게 된다는 사실입니다.
이 때 아래처럼 배열을 사용할 수 있습니다.

아래처럼 배열을 선언해주는 겁니다.
"일단 김배열 친구가 1~5반 중 하나에 들어가는 건 확실한데 아직 몇 반이 될 지 잘 모르겠다." 라는 코드를 아래처럼 만들어주는거죠.

String[] className = new String[5];

그러면 아래 그림처럼 값이 세팅되어집니다.
(null은 String이라는 타입에 값을 아무것도 안넣어줬을 때 기본으로 초기화 되는 값 입니다)



그리고 이제 김배열 친구가 3반으로 반 배정을 받으면

// 이렇게 적어주면 되는 것이죠.
className[2] = "김배열";


김배열 친구가 진짜 3반에 잘 배정되어졌는지 확인해볼까요?

// 중요한 건 className[i]입니다.
// [(i + 1) + "반: " +] 는 그냥 [몇 반: ]을 표현하기 위해 적어준 것 뿐입니다. 
for (int i = 0; i < className.length; i++) {
	System.out.println((i + 1) + "반: " + className[i]);
}

     ↓ 결과 ↓

이렇게 3반에 김배열 친구가 잘 배정받은 걸 확인할 수 있습니다.

0개의 댓글