자료 구조
자료 구조는 데이터를 어떻게 조직화하고 저장하며 접근할 지를 결정하는 방법이다.
자료 구조 특징
☞ 효율성 : 데이터를 효율적으로 저장, 검색, 삽입, 삭제할 수 있어야 한다.
☞ 추상화 : 데이터의 논리적인 구조와 물리적인 구현을 분리하여 추상적으로 정의해야 한다.
☞ 재사용성 : 여러 응용 프로그램에서 재사용할 수 있도록 일반적이고 유연한 구조여야 한다.
자주 사용되는 자료 구조
☞ 배열 : 동일한 데이터 타입의 요소들을 연속된 메모리 공간에 저장하는 자료 구조이다.
☞ 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 |