본문 바로가기
Java/CH03. 조건문, 반복문, 배열

3.5 자료 구조와 Array(배열)

by 개발자공부 2024. 4. 23.

자료 구조

  자료 구조는 데이터를 어떻게 조직화하고 저장하며 접근할 지를 결정하는 방법이다.

 

자료 구조 특징

효율성 : 데이터를 효율적으로 저장, 검색, 삽입, 삭제할 수 있어야 한다.

추상화 : 데이터의 논리적인 구조와 물리적인 구현을 분리하여 추상적으로 정의해야 한다.

재사용성 : 여러 응용 프로그램에서 재사용할 수 있도록 일반적이고 유연한 구조여야 한다.

 

자주 사용되는 자료 구조

배열 : 동일한 데이터 타입의 요소들을 연속된 메모리 공간에 저장하는 자료 구조이다.

☞ List, Map, Set, 스택, 큐, 트리 등이 있다.


 

Array 배열

  연관된 데이터를 모아서 통으로 관리하기 위해서 사용하는 데이터 타입이다.

변수가 데이터 하나를 저장하기 위함이라면 배열은 데이터 여러 개를 변수 하나에 저장하기 위한 것이라고 할 수 있다.

 

배열 특징

☞ 동일한 자료형의 순차적 자료 구조이다.

인덱스 연산자[]를 이용하여 빠른 참조가 가능하다.

 물리적 위치와 논리적 위치가 동일하다.

 배열 순서는 0부터 시작한다. (=인덱스)

☞자바에서는 객체 배열을 구현한 ArrayList를 많이 활용한다.


배열 선언과 초기화, 인덱스, 요소(elements)

// 배열 메모리 공간 만들기 (선언)
int[] arr1 = new int[5]; // <-- 흔히 사용하는 방식
char arr2[] = new char[3];// <-- [][][][][] 데이터 넣을 수 있는 상자 5개 생성
String[] arr3 = new String[]{가,나,다,라,마}; // <-- 선언과 동시에 초기화, 배열 5개가 만들어졌다.
double[] arr4 = {0.1,0.2,0.3} // <-- 'new 데이터타입' 생략 가능, 배열 3개가 만들어졌다.

▷ int 데이터를 담을 수 있는 배열을 10개 선언한 것이지 int 를 선언한 것이 아니다.

'new 데이터값 [배열 길이(length)]'. 배열 전체 바이트는 4 * 10 = 40byte이다.

▷ 배열은 반드시 크기(길이)가 정해져야 사용할 수 있다. 

배열 값에 기본 데이터 타입(ex. int, double...) 혹은 참조 변수(ex. String....)가 들어갈 수 있다.

// 초기화 , 인덱스, 요소
int[] arr10 = new int[10];

arr10[0] = 1; // <-- [인덱스], 인덱스는 0부터 시작한다.
arr10[1] = 2;
arr10[2] = 3; // <-- 인덱스 2까지만 쓸 수도 있다. 요소 길이는 3개이다.

// 배열 길이 10, 인덱스 길이 9, 요소 길이 3

arr10[10] = 10; // <-- 인덱스 길이를 벗어났으므로 오류가 발생한다.

사전기반지식  : 모든 프로그래밍에서 인덱스 번호0부터 시작한다. (배열 크기 - 1 = 인덱스 크기 / n - 1) 

▷arr1[10] = 10; 이런 식으로 인덱스 길이를 벗어나면 오류가 발생한다.

▷배열 길이와 요소 개수가 꼭 동일하지는 않다.

 배열은 주로 반복문과 함께 사용된다.


 

도서관리 프로그램 만들어보기

[조건]

☞ 저장, 전체 조회, 선택 조회, 전체 삭제, 선택 삭제, 프로그램 종료를 선택할 수 있어야 한다. (CRUD)

저장 : 사용자가 책 제목과 저자, 가격, 출판사를 저장할 수 있어야 한다.

조회 : 전체 책 목록을 조회하거나 특정 제목으로 검색하여 조회할 수 있어야 한다.

삭제 : 전체 삭제하거나 특정 책만 삭제할 수 있어야 한다.

종료 : 사용자가 프로그램을 종료할 때까지 계속 실행되어야 한다.

Scanner을 활용하고, 입력받는 데이터 타입은 모두 String로 처리해야 한다.

책 목록 저장 한계는 100개이다.

 

전화번호 관리 프로그램 만들어보기

[조건]

☞ 저장, 전체 조회, 선택 조회, 전체 삭제, 선택 삭제, 프로그램 종료를 선택할 수 있어야 한다. (CRUD)

'Java > CH03. 조건문, 반복문, 배열' 카테고리의 다른 글

3.6 2차원 배열  (0) 2024.06.11
3.2 switch 문  (0) 2024.06.11
3.4 While 반복문과 break,return, continue  (0) 2024.04.13
3.3 for (반복문)  (0) 2024.04.11
3.1 If - else문  (0) 2024.04.11