본문 바로가기

java

자바강의 4일차

1. 배열(array)

     1-1) 배열이란?

           - 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 배열이라 한다. "배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것"

           - 여기서 중요한 것은 같은타입이어야 한다는 것이다.

           - 서로 다른 타입의 변수들로 구성된 배열은 만들 수 없다.

             Ex) int[] score = new int[5];   // 5개의 int값을 저장할 수 있는 배열 생성

 

      1-2) 배열의 생성

            - 배열을 선언하는 방법은 타입의 변수를 선언하고 변수 또는 타입에 배열임을 의미하는 대괄호 []를 붙이면 된다.

선언방법 선언예시
타입[ ] 변수이름; int[] score;   ,  String[] names;
타입 변수이름[ ] int score[];    , String names[];

 

  * 배열의 생성

     - 배열은 선언한 다음에는 배열을 생성해야 한다.

     - 배열을 선언한 것은 단지 생성된 배열을 다루기 위한 참조변수를 위한 공간이 만들어질 뿐이고, 배열을 생성해야만 비로소 값을 저장할 수 있는 공간이 만들어지는 것이다. 

 

     타입[] 배열이름;         // 배열을 선언 (배열을 다루기 위한 참조변수 선언)

     배열이름 = new 타입[길이];           // 배열을 생성 (실제 저장공간을 생성)

 

   1-3) 배열의 길이와 인덱스

         - 생성된 배열의 각 저장공간을 배열의 요소(element)라고 하며, 배열이름[인덱스]읭 형식으로 요소에 접근한다.

         - 인덱스(index)는 배열의 요소마다 붙여진 일련번호로 각 요소를 구별하는데 사용된다.

            * 인덱스의 범위는 0부터 배열의 길이 -1 까지

         - 배열에 값을 저장하고 읽어오는 방법은 변수와 같다.

         - 단 변수이름 대신 배열이름[인덱스]를 사용한다는 점만 다르다.

 

        * 배열의 길이

           - 배열의 길이는 배열의 요소의 개수,  즉 값을 저장할 수 있는 공간의 개수이다.

           - 배열의 길이는 양의 정수여야 한다.

 

    1-4) 배열의 초기화

           - 배열은 생성과 동시에 자동적으로 자신의 타입에 해당되는 기본값으로 초기화하므로 배열을 사용하기 전에 따로 초기화를 해주지 않아도 되지만 원하는 값을 따로 저장할 수 있다.

 

    - 저장할 값들을 괄호{}안에 쉼표로 구분해서 나열하면 되고, 괄호안의 값의 개수에 의해 배열의 길이가 자동으로 결정되기 때문에 배열의 길이는 안적어도 된다.

 

   1-5) 배열의 출력

            int[] arr = {100,95,80,70,60};    //길이: 5, 마지막 인덱스: 4

           arr.length : 배열의 길이 반환

 

          for(int i=0;i<arr.length;i++) {

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

           }

 

           for(int ele : arr) {

               System.out.println(ele);

           }

 

   1-6) 배열의 복사

          ① for문을 이용한 복사

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

              int[] tmp = new int[arr.length * 2];

 

              for(int i=0;i<arr.length;i++) {

                  tmp[i] = arr[i];

              }

 

              arr.length == 5

              tmp.length == 10(i의 최대값 : 9)

          ② System.arraycopy()를 이용한 배열의 복사

              - for문 대신 System클래스의 arraycopy()를 사용하면 보다 간단하고 빠르게 복사할 수 있다.

 

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

              int result[] = new int[arr.length * 2];

 

              System.arraycopy(arr, 0, result, 0, arr.length)

              ==> arr배열 0번 인덱스부터 result 배열에 복사를 할건데, arr의 0번부터 복사를 시작해서 result 0번부터 순차적으로 대입 arr의 length만큼 복사

 

              System.out.println(Arrays.toString(arr));            [1,2,3,4,5,] 

              System.out.println(Arrays.toString(result);           [1,2,3,4,5,0,0,0,0,0]

   

2. 다차원배열

          - 지금까지 우리가 배운 배열은 1차원 배열인데, 2차원이상의 배열도 선언해서 사용할 수 있다.

 

       2-1) 2차원 배열의 선언과 인덱스                 

선언방법 선언예시
타입[][] 변수이름; int[][] score;
타입 변수이름[][]; int sscore[][];
타입[] 변수이름[]; int[] score[];

 

    - 2차원 배열은 행과 열로 구성되어 있기 때문에 index로 행과 열에 각각 하나씩 존재한다.

    - 행 index의 범위는 0~행의 길이 -1이고, 열 index의 범위는 0~열 인덱스-1이다.

    - 각 요소에 접근하는 방법은 배열이름[행index][열index]; 이다.

 

      2-2) 2차원 배열의  초기화

           - 2차원 배열도 괄호를 사용해서 생성과 초기화를 동시에 할 수 있다.

           - 다만,1 차원배열보다 괄호{}를 한번 더 써서 행렬로 구분해준다.

                int[][] arr = new int[][]{{1,2,3},{4,5,6}};

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

'java' 카테고리의 다른 글

자바강의 6일차  (1) 2024.01.13
자바강의 5일차  (0) 2024.01.10
자바강의 3일차  (1) 2023.12.27
자바강의 2일차  (1) 2023.12.27
자바강의 1일차  (0) 2023.12.24