[JAVA] 배열

2020. 10. 28. 11:39
728x90

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

 

  • 배열의 생성

           타입[] 변수이름 = new 타입[길이];

                배열 선언             배열 생성           

 

           - int[] score = new int[5];

 

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

 

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

 

    배열을 선언하는 것은 참조변수를 위한 공간이 만들어질 뿐,

    배열을 생성해야만 비로소 값을 저장할 수 있는 공간이 만들어지는 것이다.

 

ex)  int [] score;

          :  int형 배열 참조변수 score을 선언, 데이터를 저장할 수 있는 공간은 아직 마련되지 않음.

 

        score = new int[5];

           :  연산자 new에 의해서 메모리의 빈공간에 5개의 int형 데이터를 저장할 수 있는 공간이 마련됨.

              각 배열 요소는 자동적으로 int의 기본값인 0으로 초기화 된다.

              대입연산자 '='에 의해 배열의 주소가 변수 score에 저장된다.

 

 

  • 배열의 길이  =>     배열이름. length; 

          배열은 한번 생성하면 길이를 변경할 수 없기 때문에 이미 생성된 배열의 길이는 변하지 않는다.

          배열이름.length는 상수 이고, 읽을수만 있고 변경할 수 없다.

 

      * 배열의 길이 변경

       1. 더 큰 배열을 새로 생성한다.

       2. 기존 배열의 내용을 새로운 배열에 복사한다.

 

 

  • 배열의 출력

             1. for문 이용

 

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

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

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

                    }

 

             2. Arrays.toString(배열이름)

                    : 배열의 모든 요소를 '[첫번째 요소, 두번째 요소, ... ]' 와 같은 형식의 문자열로 만들어서 반환.

 

                *배열의 값을 바로 출력하면 배열은 참조변수이기 때문에 '타입@주소' 형식으로 출력

 

 

  • 배열의 복사 
  • : 길이를 변경할 수 없기 때문에 더 많은 저장공간이 필요하다면 더큰 배열을 생성해 내용을 복사해야 한다.

             1. for문 이용

 

                     int[] arr = new int[5];

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

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

                            tmp[i] = arr[i];                   // arr[i]의 값을 tmp[i]에 저장

                     }

 

                      arr = tmp;                           // 참조변수 arr이 새로운 배열을 가리키게 한다.

 

         * arr과 tmp는 같은 배열을 가리킴.  전에 arr이 가리키던 배열은 더 이상 사용할 수 없게 된다.

 

 

            2.System.arraycopy()    :  for문보다 효율적.

                     : 지정된 범위의 값들을 한번에 통째로 복사한다.

 

              System.arraycopy(num, 0, newNum, 0 , num.length);

               => num[0]에서 newNum[0]으로 num.length개의 데이터를 복사한다.

 

728x90

'Development > 자바' 카테고리의 다른 글

[JAVA] 객체지향 설계의 5가지 원칙 SOLID  (0) 2021.01.13
[JAVA] 객체지향의 특징  (0) 2021.01.13
[JAVA] 자바란?  (0) 2020.11.10
[JAVA] 스택과 큐  (0) 2020.11.05
[JAVA] 람다식이란?  (0) 2020.10.22

BELATED ARTICLES

more