Post

Array

✅ Array

배열이 담는 자료형의 크기만큼 메모리를 차지한다.
따라서 넣은 자료들에 비해 너무 큰 배열을 선언하는 것을 주의할 것.

how to declare an array

with value

1
String [] students= {"charlie", "jack", "sophie"};

without value, empty array with just size

new가 필요한 이유: array는 literal이 아니기 때문!

1
2
3
String [] family= new String [6];
family[0]= "mother";
family[1]= "dad";

array length

1
int arrayLength= students.length;

get value

use index

1
 String who= students[1];

set value

use index

1
students[0]= "peter"; //students: ["peter", "jack", "sophie"]

printArray Arrays.toString()/ Arrays.deepToString()

array는 reference type이기 때문에 그냥 출력하면 array의 메모리값이 출력된다.

1
2
3
4
5
6
int[] nums= {1,2,3,4,5};
System.out.println(nums);
System.out.println(Arrays.toString(nums));
//result:
// [I@6bdf28bb
// [1, 2, 3, 4, 5]
1
2
3
4
5
6
int [] [] IntAry= new int [] [] {
                {1,2,3},
                {4,5},
                {6,7,8}
        };
System.out.println(Arrays.deepToString(IntAry));

✅ for in array/ foreach

1
2
3
4
5
6
7
8
int[] score= {90, 85, 90, 35, 75};

for(int i=0; i<=score.length; i++){
        System.out.println(score[i]);
}
for(int num:score){
        System.out.println(num);
}

✅ 다중 배열: 배열 안에 또 배열

배열 안에 배열이 있으므로 IntAry[num]하면 num번쨰 배열을 받을 것이고,
숫자를 받고 싶다면 IntAry[num][num]

2D array

1
2
3
4
5
6
7
        int [] [] IntAry= new int [] [] {
                {1,2,3},
                {4,5},
                {6,7,8}
        };
        int[] result1 = IntAry[0]; // [1, 2, 3]
        int result2= IntAry [0][1]; // 2

for in for 사용해서 2D array 프린트

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int twoDimensionArray[][] = new int[] []{
                {5, 10, 15, 20},
                {25, 30, 35, 40},
                {45, 50, 55, 60},
                {65, 70, 75, 80},
        };

        for(int row= 0; row< 4; row++){
            for(int col= 0; col<4; col++){
                System.out.printf("%d ", twoDimensionArray[row][col]);
            }
            System.out.println();
        }

// 5 10 15 20
// 25 30 35 40
// 45 50 55 60
// 65 70 75 80

for in for 사용헤서 두 array 합한 새로운 array

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int [][]arr1= new int[] []{
                {5, 10, 15, 20},
                {25, 30, 35, 40},
                {45, 50, 55, 60},
                {65, 70, 75, 80},
        };

int [][]arr2 = new int[] []{
        {1,2,3,4},
        {5,6,7,8},
        {9,10,11,12},
        {13,14,15,16},
};

int[][] arrSum = new int[4][4];

for(int row= 0; row< 4; row++){
        for(int col= 0; col<4; col++){
        int num1= arr1[row][col];
        int num2= arr2[row][col];
        int sum= num1+ num2;

        arrSum[row][col]= sum;
        }
}
System.out.println(Arrays.deepToString(arrSum));

✅ 배열의 복사

reference type인 array를 원본 따로 복사하고 싶어요

for 사용해서 copy

b는 a를 복사한 배열

1
2
3
4
5
6
7
8
9
10
11
12
13
int[] a = {1,2,3,4,5};
int[] b= new int[a.length];

    for(int i=0; i<= a.length; i++){
        b[i]= a[i];
    }

//복사한 다음
//a 배열의 값을 바꾸고 출력해보면?
a[0]= 6;
a: [6,2,3,4,5];
b: [1,2,3,4,5];
//b배열은 바뀌지 않았다는 것을 알 수 있다.

copyOf

1
2
int[] a = {1,2,3,4,5};
int[] b= Arrays.copyOf(a, a.length);

clone

clone은 1차원 array일 떄만 가능하다.

1
2
int[] a = {1,2,3,4,5};
        int[] b= a.clone();

✅ 2D 배열의 복사

1
2
3
4
5
6
7
8
9
10
11
int[][] arr = new int[][]{
                {5, 10, 15, 20},
                {25, 30, 35, 40},
                {45, 50, 55, 60},
                {65, 70, 75, 80},
        };

        int[][] arrCopy = new int[4][];
        for(int row=0; row<4; row++ ){
            arrCopy[row]= arr[row].clone();
        }
This post is licensed under CC BY 4.0 by the author.