본문 바로가기

기록/자바_국비

[배운 내용 정리] 1112 자바 국비교육

728x90

2020년 11월 12일 9시 ~ 15시 30분 zoom으로 수업 진행


 

배열 복사

- 얕은 복사

  객체의 주소 값만 가져와 참조형 변수에 저장하고 하나의 객체를 두 변수가 참조하는 것

 

- 깊은 복사

  새로운 배열 객체를 생성하여 기존 배열의 데이터를 복사하는 것

 

2차원 배열

 자료형이 같은 1차원 배열의 묶음으로 배열 안에 다른 배열이 존재한다

 2차원 배열은 할당된 공간마다 인덱스 번호 두개 부여 (앞 번호는 행, 뒷 번호는 열)

 

2차원 배열 선언과 할당

 - 배열 선언

   자료형[][] 배열명;

   자료형 배열명[][];

   자료형[] 배열명[];

 

 - 배열 할당

   자료형[][] 배열명 = new 자료형[행크기][열크기];

   자료형 배열명[][] = new 자료형[행크기][열크기];

   자료형[] 배열명[] = new 자료형[행크기][열크기];

   ex)

      int[][] arr = new int[3][4];

      int arr[][] = new int[3][4];

 

package com.test01;

 

public class Test {

           public static void main(String[] args) {

                     test1();

          

}

           public static void test1() {

                    

                     //선언

                    

                     int [][] iarr1;

                     int iarr2[][];

                    

                     //할당

                    

                     iarr1 = new int [3][5];

                    

                    

                     //이런식으로도 초기화가능하다.   

                     iarr2 = new int [3][];

                     iarr2[0] = new int[5];

                     iarr2[1] = new int[5];

                     iarr2[2] = new int[3];

                    

//                   iarr2 = new int[][5];

//                   몇줄인지 모르는 상태에서는 초기화가 불가능

                    

                     for(int i=0; i<3; i++ ) {

                                for(int j=0; j<5; j++) {

                                           System.out.print(iarr2[i][j]+ " ");

                                          

                                }

                                System.out.println();

                     }

 

           }

}

 

package com.test01;

 

public class DeArrayTest01 {

 

           public static void main(String[] args) {

                     // TODO Auto-generated method stub

                     test1();

                     System.out.println("   ---   ");

                     int[][] arr = new int[3][5];

                     int val = 1;

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

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

                                           arr[i][j] = val++;

                                }

                     }

                     new DeArrayTest01().prn(arr);

                     System.out.println("\n   ---   ");

 

                     test2();

 

           }

 

           public static void test1() {

 

                     int[][] arr1;

                     int arr2[][];

 

                     arr1 = new int[3][5];

                     arr2 = new int[3][];// new int[][5];능 안댐

                     arr2[0] = new int[5];

                     arr2[1] = new int[5];

                     arr2[2] = new int[3];

 

                     for (int i = 0; i < 3; ++i) {

                                for (int j = 0; j < 5; ++j) {

                                           System.out.print(arr1[i][j] + " ");

                                }

                                System.out.println("");

                     }

 

                     /*

                      * for(int i=0; i<3; ++i) { for(int j=0; j<5; ++j) {

                      * System.out.print(arr2[i][j]+" "); } System.out.println("");

                      *

                      * //java.lang.ArrayIndexOutOfBoundsException 에러나는이윻

* //2행의 마지막 열이 3칸이 끝인데 출력 범위가

                      * 5라서 }

                      */

 

           }

 

           // 이차원 배열을 전달받아 출력하는 메소드

           public void prn(int arr[][]) {

 

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

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

                                           System.out.print("\t" + arr[i][j]);

                                }

                                System.out.println("");

                     }

 

           }

 

           public static void test2() {

                     // 가변

                     int[][] arr = new int[3][];

 

//                   new DeArrayTest01().prn(arr); java.lang.NullPointerException 에러뜹니다

                     // 우리가 만든 arr 배열은 행만 만들어졌는데 열을 만들어주지않아서 주소를 찾을 수 없다는 에러가 뜬다

 

                     arr[0] = new int[5];

                     arr[1] = new int[3];

                     arr[2] = new int[5];

 

                     int val = 1;

 

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

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

                                           arr[i][j] = val++;

                                }

                     }

 

                     // 내용 출력

                     new DeArrayTest01().prn(arr);

 

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

                     System.out.println("");

                     new DeArrayTest01().prn(arr2);

 

           }

 

}