배열과 ArrayList_java사전교육 17~21

두윤기·2022년 12월 21일

17. 배열과 ArrayList

> Array(배열)

  • 동일한 자료형의 변수를 index를 이용해서 순차적(물리적, 논리적으로 연속적)으로 관리
  • 데이터가 중간에 빌 경우 data를 땡겨서 순차적으로 만들어주어야 함
  • 데이터가 length만큼 꽉 찼는데, 데이터 추가를 원할 경우 length가 더 긴 배열을 선언 후 data를 복사해야함

length

  • 배열이 선언될 때의 크기
  • index: 0 ~ n-1
  • 배열이름.length

size(크기)

배열 중 사용되는 공간의 크기

> 배열 선언

  • 자료형[] 배열이름 = new 자료형[개수];
    int[] arr = new int[10];
  • 자료형 배열이름[] = new 자료형[개수];
    int arr[] = new int[10];
  • 배열의 length에 변수도 들어갈 수 있음

> 배열 초기화

  • 배열은 선언과 동시에 초기화 할 수 있음
  • 배열을 초기화 할 때는 배열의 개수를 명시하지 않음
// 개수 생략
int[] studentIDs = new int[] {101, 102, 103};
// 오류 발생
int[] studentIDs = new int[3] {101, 102, 103};
// int형 length 3인 배열 생성
int[] studentIDs = {101, 102, 103};
  • 아무런 초기화 값이 없이 선언만 한 경우, 정수와 char는 0, 실수는 0.0, 객체 배열은 null로 초기화 됨

> 배열 사용

  • []
    • index 혹은 첨자 연산자
    • 배열의 위치를 지정하여 자료를 가져옴
    • 모든 배열의 순서는 0부터 시작함
    • n개의 배열은 0부터 n-1까지 자료 존재

|해보기| 배열 초기화하고 출력하기

18. Object Array

> 객체 배열 만들기

  • reference variable을 선언하는 객체 배열
  • 배열만 생성한 경우 요소는 null(주솟값)로 초기화 됨
  • 각 요소를 new를 활용하여 생성하여 저장해야함
  • 객체 배열 초기화

> 배열 복사하기

  • 기존 배열과 같은 배열을 만들거나 배열이 꽉 찬 경우 더 큰 배열을 만들고 기존 배열 자료를 복사.
  • System.arraycopy(src, srcPos,dest,destPos, length);
    • 매개변수에 문제가 있을 경우, compile은 되지만 run에서 error 발생

> 객체 배열 복사하기

  • shallow copy(얕은 복사): 배열 요소의 주소만 복사되므로 배열 요소가 변경되면 복사된 배열의 값도 변경됨
  • deep copy(깊은 복사)

> enhanced for loop (향상된 for문)

배열 요소의 처음부터 끝까지 모든 요소를 reference할 때 편리한 반복문


19. multi-dimensional array

> 다차원 배열

  • 2차원 이상의 배열
  • 지도, 게임 등 평면이나 공간을 구현할 때 많이 사용
  • two dimensional array 의 선언과 구조
  • 선언과 초기화


20. ArrayList class

> ArrayList class

  • 기존 배열은 길이를 정하여 선언하므로 사용 중 부족한 경우 다른 배열로 복사하는 코드를 직접 구현해야 함
  • 중간의 요소가 삭제되거나 삽입되는 경우도 나머지 요소에 대한 조정하는 코드를 구현해야 함
  • ArrayList class는 java에서 제공되는 object array가 구현된 class
  • 여러 method와 property 등 사용하여 object array를 편리하게 관리
  • 가장 많이 사용하는 object array class
  • java doc: https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html
  • [핫키] control + shift + o : organize import

> ArrayList class methods

요소를 추가하거나 제거할 때 각 내부에서 코드가 모두 구현되어 있으므로 배열을 직접 선언하여 사용하는 것보다 편함

> ArrayList class 사용하기

  • ArrayList<E> 배열이름 = new ArrayList<E>();
  • 사용할 객체를 E위치(generic)에 넣고, ArrayList method를 활용하여 추가하거나 참조

+ ArrayList에 <generic>을 명시해주지 않으면 data를 get할 때, object type으로 가져옴(+형변환으로 사용하기도 함)

21. eclipse java debugging

  • break point 설정: line 더블클릭
  • step into (F5): 함수 정의로
  • step over (F6): 다음 줄로
  • step return (F7): 이 전으로
  • resume (F8): 다음 break point까지 진행
profile
programmerD

0개의 댓글