티스토리 뷰

Goal

 - 배열에 대해 알아본다

 - ArrayList에 대해 알아본다

 - 배열과 ArrayList의 차이를 간단하게 알아본다.

 - 배열의 구현과 출력을 코드를 통해 알아본다.

 

 

1. 배열이란?

 - 동일한 자료형의 순차적 자료 구조

 - fixed list이기 때문에 한번 선언할 때 크기를 정해준다. 만약, 공간이 꽉 찬 배열에 새로운 element를 넣고 싶을 때는 공간을 늘릴 수 없기 때문에 더 큰 크기의 배열을 생성 한 후, 이전 배열에 있는 element들을 새 배열에 복사한다.

 - 배열 선언하기

int[] arr = new int[10];
int arr[] = new int[10];

 

2. ArrayList

 - JDK에서 배열을 구현한 라이브러리, fixed list에서 사용할 수 있는 유용한 기능들이 구현되 있다.

 - ArrayList 각 배열의 element 들은 주소값을 갖고 있기 때문에, 인덱스를 통해 원하는 값을 가져오기가 수월하다. (철자 연산이 유리하다)

 - 배열의 element 사이에 새로운 element를 넣을 경우에는 위치에 따라 기존의 element들을 전부 한칸씩 앞이나 뒤로 밀어야 하기 때문에 시간이 많이 걸린다. (그냥 배열은 element사이에 새로운 element를 넣을 때, 위와 같은 절차를 걸치지 않고 해당 자리에 새로운 element를 넣은 후 기존 값은 지원버린다.)

 그림 1) 배열의 메모리 구조 

 - 물리적 구조와 논리적 구조가 같다.

3. 배열 실습코드

public class ArrayTest {

    public static void main(String[] args) {
        
        //1. 선언과 동시에 초기화
        int[] arr = new int[] {1, 2, 3};
        
        //2. 선언과 동시에 초기화(new 생략)
        int[] arr2 = {1, 2, 3, 4};
        
        //3. 선언 후 초기화는 불가능하다
        int[] arr3;
        //arr = {1, 2, 3, 4]; error
        
        //4. 배열 선언
        int[] arr4 = new int[10]; //선언시에 크기를 정해준다.
        
        //5. for문을 이용한 배열에 element 넣기
        for (int i = 0, num = 1; i < arr4.length; i++, num++) {
            arr4[i] = num;
        }
        
        //6. for문을 이용한 배열의 element 출력
        for (int i = 0; i < arr4.length; i++) {
            System.out.print(arr4[i] + " ");
            
        }
        
        //7. for문을 이용한 배열의 합 구하기
        int total = 0;
        for (int i = 0; i < arr4.length; i++) {
            total += arr4[i];
        }
        
        System.out.println(total);
        
        //8. 대문자 A-Z를 배열에 저장하고 다시 출력
        char[] arrAlpha = new char[26];
        //char ch = 'A';
        for (int i = 0; i < arrAlpha.length; i++) {
            arrAlpha[i] = (char)(65 + i);
            //arrAlpha[i] = ch++; 형식으로도 가능 
        }
        
        for (int i = 0; i < arrAlpha.length; i++) {
            System.out.print(arrAlpha[i] + " ");
        }
        
    }

}

 

* 참고자료

 - char형 타입에 숫자를 + 1 하는 것과 증감연산자 ++하는 것은 결과값이 다르다

 -> char형 타입은 실제로는 아스키코드 값인 정수이며 증감연산자는 변수 값을 바꾸기 때문에이와 같은 결과가 나온다.

char ch = 'A';

System.out.println(ch + 1); // 결과 숫자 66
System.out.println(++ch); //결과 B

System.out.println(ch) // 결과 B, 증감연산자로 인해 변수 ch의 값을 +1 증가시킴 

 - 아스키코드 -> char로 바꾸기

( https://coding-factory.tistory.com/74 )

'Java > Java 올인원 패키지' 카테고리의 다른 글

12. ArrayList (Java)  (0) 2020.03.16
11. 객체 배열, 다차원 배열 (Java)  (0) 2020.03.15
9. Singleton pattern (Java)  (0) 2020.03.14
8. static 변수, 메서드 (Java)  (0) 2020.03.14
7. 객체 간 협력  (0) 2020.03.14
댓글