배열 (Arrays)

배열의 특성

  • 하나의 변수로 여러 개의 값을 다룰 수 있음
  • 동일 자료 형만 다룰 수 있음
  • 한번 생성한 배열의 크기는 변하지 않음.
  • 배열에 속한 값은 메모리에 연속으로 위치함(중요특성!)

배열의 선언

  • 일반적으로 자료형[] 변수명; 으로 선언함
  • 초기화 하지 않고 선언만하면 메모리는 잡히지 않음
        int intval;

        int[] integers;
//        int cStyleInteger[]; // 배열선언가능하나 가독성때문에 안쓰임//쓰지마

        long[] longs;
        char[] chars;

        String[] strings;

배열의 초기화

  • new 자료형[배열의크기] 로 초기화 함

  • 혹은 바로 {}안에 값을 입력하여 초기화 하기도함

    // 배열의 생성과 초기화
          integers = new int[10]; // 선언된 배열을 초기화
          int[] integers2 = new int[10]; // 선언과 동시에도 가능
          integers2[0] = 5;
          integers2[1] = 10;
          integers2[3] = 9;
          // 값을 넣을 때 순차적으로 하지 않아도 된다.
    
          System.out.println(integers2[0]);
          System.out.println(integers2[1]);
          System.out.println(integers2[2]); // 0으로 자동으로 초기화// 입력없으면=0
          System.out.println(integers2[3]);
          System.out.println("");
    
          int[] integers3 = new int[]{5, 2, 3, 6, 12, 4}; // 바로 입력할 때는 길이 입력 안해도 된다.
          System.out.println(integers3[0]);
          System.out.println(integers3[1]);
          System.out.println(integers3[2]);
          System.out.println(integers3[3]);
          System.out.println(integers3[4]);
          System.out.println(integers3[5]);
    //      System.out.println(integers3[6]);// ArrayIndexOutOfBoundsException 오류 발생
          //배열 사용할 때에는 선언해 준 길이까지만 접근해야 한다.
    
          int[] integers5 = {1, 4, 5, 23, 0}; // new int[] 안 붙여도 된다.

반복문을 통한 배열에 접근

  • 반복문을 통하여 배열을 초기화 할 수 있음
  • 또한 반복문을 통해 배열을 출력할 수 있음
  • 또한 Enhaced for문을 통해도 배열에 접근할 수 있음
   // 배열을 반복문으로 접근

        float[] floats = new float[5];
        for (int i = 0; i < floats.length; i++) { // for문을 이용한 초기화, new할때도 초기화지만 처음값넣을때도 초기화//혼용 사용
            floats[i] = (float) (i * 0.25);
        }

        // for문을 통한 배열 출력
        for (int i = 0; i < floats.length; i++) {
            System.out.println(floats[i]);
        }

        // Enhanced for, for each문이라고도 함
        // 배열에 접근하는 다른 방법
        // for(자료형 변수명 : 배열명){ 배열0부터 끝까지 값을 floatVal에  대입해줌)

        for(float floatVal: floats){
            System.out.println(floatVal);
        }
        // 밑에 for문과 같은 역할을 함

        for(int i = 0 ; i < floats.length; i++){
            float floatVal = floats[i];
            System.out.println(floatVal);
        }

배열의 크기 변화

  • 배열은 메모리를 연속적으로 사용하기에 배열의 크기를 수정할 수 없음
  • 그래서 배열의 크기를 변경하기 위해서는 새로운 배열을 생성해서 대입해주어야함 함
  • 또한 그것을 위한 arraycopy 메서드가 존재함


        int [] src = {1, 2, 3, 4, 5};
        int [] dst = new int[10];
        for(int i = 0; i< src.length; i++){
            dst[i] = src[i];
        }
        for(int integer : dst){
            System.out.println(integer);
        }

        // 배열 크기변경은 빈번하기에 크기변경 함수 존재

        int[] src2 = {1, 2, 3, 4, 5};
        int[] dst2 = new int[10];
        System.arraycopy(src2,0,dst2,0,src2.length);//arraycopy(어디에서,몇번째부터, 어디로, 몇번째부터,어디까지)
        for(int integer: dst2){
            System.out.println(integer);
        }

'Java' 카테고리의 다른 글

[Java]2_8_다차원 배열 (N-D Arrays)  (0) 2020.07.31
[Java] 2_7_1_배열 연습  (0) 2020.07.31
[Java] 2_6_2_반복문 예제  (0) 2020.07.31
[Java] 2_6_1_반복문 연습  (0) 2020.07.31
[Java] 2_6_반복문 (Loops)  (0) 2020.07.31

+ Recent posts