반응형

 


안녕안녕! 오늘은 Java로 하루를 시작하자

이건 생각보다 Deep하게 가야할 친구이기도 하고,

또한 필드에서도 잘못 이해하는 부분들이 많으니

 

한번 잘 짚고 넘어가보자!


배열 (Array)

 

배열이라고 하는 친구인데..!
예를 들어 설명을 해볼까해

 

만약 친구 100명이 있는데,

그 친구들의 이름과 전화번호를 적어야해,

이걸 A4용지에 적어내려야하지..

 

요즘이야 연락처가 유실될 일이 없긴 하지만..!

 

여기서 너는 2개 중에서

원하는 스타일로 일처리를 할 수가 있는데

 

1. 한장당 한명씩 이름과 전화번호를 분류하여 A4용지 200장에 쓰기,

2. A4 용지 한장에 나열하여 이름, 전화번호를 100줄 쓰기

 

아 물론 쌩고생을 하기 싫은건 잘 알지만,

꼭 해야한다면 어떤걸 택할거야 ?

 

이건 누가봐도 2번일거야

"그래도 한번 어려운거 해놔야 좋은거 아님!!?"

 

응 아냐

 

이걸 프로그램 적으로 말을 해보자면

이걸 다~~~변수로 만들어 처리하느냐

아니면 배열로 감싸냐!

 

그게 A4 200장과

A4 한장의 차이인거지

 

코드를 보면서 설명을 할게

package project;
public class Main {
    public static void main(String[] args) {
        int one = 1; 
        int two = 2; 
        int three = 3; 
        int four = 4; 
        int five = 5;
        int six = 6; 
        int seven = 7; 
        int eight = 8; 
        int nine = 9; 
        int ten = 10;
        
        System.out.println(one + "번");
        System.out.println(two + "번");
        System.out.println(three + "번");
        System.out.println(four + "번");
        System.out.println(five + "번");
        System.out.println(six + "번");
        System.out.println(seven + "번");
        System.out.println(eight + "번");
        System.out.println(nine + "번");
        System.out.println(ten + "번");
    }
}

 

대략 이런식이 되겠지?

10개라면 10개의 변수를 만들어주어야하는꼴인거야

그럼 나중에.. 줄이 어~~~엄청 길어지고 

보기에도 짜증날거야 ㅋㅋ

 

이걸 배열로 줄여본다면?

package project;
public class Main {
    public static void main(String[] args) {
        int arr[] = {1,2,3,4,5,6,7,8,9,10};
        
        for(int i = 0; i < arr.length; i++)
        System.out.println(arr[i] + "번");

    }
}

 

이 두개의 결과는

 

 

똑같은 결과인데, 코드길이에서 확 차이가 나지!

"그래도 1,2,3,4,5,6,7 ... 언제 쓰고 있냐!!"

 

그거야 뭐 나중에 DB에서 쿼리로 끌고 와서

그 결과값을 배열에 넣고 그 결과값 중 필요한 컬럼값만 땡겨오면 되니 blahblah 

 

어쨋든..!

 

배열은 불필요한 변수선언을 생략해주는 고마운 녀석인데

즉 바구니 같은 친구야

 

변수로 선언시, 같은 타입의 친구들을 변수를 선언하고, 메모리에 올려서

그 공간을 활용해 담는다면,

배열의 경우, 같은 데이터 타입을 가진 연속으로 이루어진 메모리 공간으로 이루어진 자료 묶음인데

변수의 묶음 단위라고 보면 되는거지!

 

배열은 주로 

변수타입 변수명[]

이렇게 중괄호로 선언을 해주는데

배열안에 무언가를 담을때는

 int arr[] = {1,2,3,4,5,6,7,8,9,10};

이렇게 대괄호를 활용해주지

 

또한 [ ] 이 친구의 경우에 따라서

arr[ 0 ][ 1 ]

이렇게 중괄호를 두개를 써줄 수가 있는데 이 개념이 좀 중요해

이건 바구니가 두개야! 의 개념이 아니라

하나의 바구니에 첫번째 구역을 말해

 

쉽게 설명해서

 

우리가 쓰는 컴퓨터에 하드디스크를 

파티션을 나누어서 C:\ , D:\를 나눠둔거라고 보면 좀 쉬울것같아

예를 들면

arr[SSD][C드라이브] = {게임,응용프로그램};
arr[SSD][D드라이브] = {사진,음악};

하나의 SSD에서 이렇게 분할이 되는것을 말해

즉, 결국 한 공간에서 그 구역을 나눠서 사용한다라고 보면되는거야

절대로 하나는 SSD 하나는 HDD가 아니라는거지

(저렇게 한글로 쓰지는않아)

 

그리고.. 위에는 [ ] 이게 하나였는데

지금은 [ ][ ]  이렇게 두개지?

이거에 따라서 1차원 배열, 2차원 배열, 다차원으로 나누어져있어

 

이 부분에 대해서는 나중에 설명해 줄게 ㅎㅎ


우리가 위 소스에 보면 arr라는 배열에 1~10이란 숫자가 들어가있어

그럼 여기서 1만 출력 하려면? 어떻게 해야할까?

package project;
public class Main {
    public static void main(String[] args) {
        int arr[] = {1,2,3,4,5,6,7,8,9,10};
        
        System.out.println(arr[1]);
    }
}

 이렇게 해주는게 맞을까?

 

정답은 아니야.

 

왜냐면 배열이라는 녀석은

순서가 0부터 시작을 하거든.

 

컴퓨터의 주소상, 1로 시작할 수가 엄써!

즉 우리가 생각 하는것에 -1이라고 보면되는거야

 

만약 8을 출력한다고하면?

System.out.println(arr[7]);

이렇게 해주어야겠지 ?

이 숫자가 무엇이냐..! 

그건 다음시간에 충분히 더 설명을 해줄게! ㅎㅎ

그럼 오늘은 여기까지만 하구 ! 다음에 보자규

그럼 20000!

 

반응형