Skip to the content.

배열을 만드는 방법-변수만들기와 비슷

1.데이터 타입을 적는다

2.변수 이름을 적듯이 배열 이름을 적는다

3.대괄호를 열고 닫는다(대괄호는 데이터 타입을 뒤에 적어도 되고 변수 이름 뒤에 적어도 된다)

4.필요하다면 초기화를 해준다(안해도됨)

4-1,초기화를 한다면 중괄호를 열고 닫느다

4-2.중괄호 내부에 초기화 값을 적는다(여러개를 만든다면 ‘,’로 구분한다)

5.초기화 방식이 두가지 될수 있다

5-1.위의 중괄호 방식이고

5-2.또다른 하나는 아래의 new를 사용하는 방식이다

배열을 사용하는 이유

점수 입력의 경우 학생 수에 따라 입력을 받아야한다

그러나 이것을 단순히 벼누로 작성한다 가정해보자

int a,b,c,d,e,f…aa,bb

위와 같이 작성하면 너무 불편하다

그러니 아래와 같이 작성하는 것이다

int student[100];

졸라맨을 이동하는 게임

 int[] array = {0, 0, 0, 0, 0, 2, 0, 0, 0, 0};
        Random ran = new Random();
        Scanner scan = new Scanner(System.in);

        int player = 0;
        boolean run = true;
        while (run) {
            for (int i = 0; i < array.length; i++) {
                if (array[i] == 2) {//졸라맨의 위치 알아내기
                    player = i;
                }
            }
            for (int i = 0; i < array.length; i++) {//졸라맨 이동출력
                if (array[i] == 2) {
                    System.out.print("[옷]");
                } else {
                    System.out.print("[ ]");
                }
            }
            System.out.println();
            System.out.println("캐릭터 이동[좌-1][우-2]");
            int num = scan.nextInt();

            if (num == 1) {
                if (player > 0) {//인덱스를 밖으로 나갈시에 제자리
                    int temp = array[player];
                    array[player] = array[player - 1];
                    array[player - 1] = temp;
                }
            } else if (num == 2) {
                if (player < 9) {//인덱스를 밖으로 나갈시에 제자리
                    int temp = array[player];
                    array[player] = array[player + 1];
                    array[player + 1] = temp;
                }
            }
        }

기본적으로 자바 프로그래밍을 하게되면
최소한으로 알아야하는 메모리 두개가 있다
스택과 힙이다
스택의 경우엔 지역 변수들이 배치된다
힙 경우엔 new연산자로 생성된 정보들이 배치된다

int score[] = new int[7];

score는 지역변수이다

new int[7]을 통해서 int형 공간 7개를 힙에 만든 정보는

프로그램이 종료될때까지 혹은 GC가 동작할때까지 살아있다

힙에 배치되는 정보와 스택에 배치되는 정보의 차이

힙은 자바의 GC가 동작하거나

프로그램이 종료되기전까지 살아있게 된다

반면 스택의 경우엔 {}중괄호로 구성된 스코프

내부에서만 정보가 살아있을 수 있다

 {
            int test = 7;
            System.out.println("test = " + test);
        }

        {
            int test = 3;
            System.out.println("test = " + test);
        }
        
        해석
        {}스코프의 구분으로 인해 변수이름이 같아도 에러가 안난다//지역변수

1차 배열의 힙과 스택 배치 그림

2차배열의 힙과 스택의 배치 그림

연습문제

두 행렬의 덧셈을 계산하는 프로그램을 만들어보자

 int[][] a = {{3, 4}, {5, 6}};
        int[][] b = {{1, 2}, {7, 8}};
        int c[][] = new int[2][2];//더해서 새로운 공간에 넣을 것이다.

        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 2; j++) {
                c[i][j] = a[i][j] + b[i][j];
            }
        }
        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 2; j++) {
                System.out.print(c[i][j] + "\t");
            }
            System.out.println();
        }