자료 구조에 대한 개념을 알아 보자.
학습 목표
1. 자료 구조에 대한 개념을 알아 보자.
2. 배열에 대한 기본 개념을 알아 보자.
3. 배열에 길이와 인덱스의 길이.
4. 배열에 길이와 요소(elements)
자료 구조는 데이터를 어떻게 조직화하고 저장하며 접근할지를 결정하는 방법입니다.
자료 구조의 특징
- 효율성: 데이터를 효율적으로 저장, 검색, 삽입, 삭제할 수 있어야 합니다.
- 추상화: 데이터의 논리적인 구조와 물리적인 구현을 분리하여 추상적으로 정의해야 합니다.
- 재사용성: 여러 응용 프로그램에서 재사용할 수 있도록 일반적이고 유연한 구조여야 합니다.
자주 사용되는 자료 구조
- 배열(Array): 동일한 데이터 타입의 요소들을 연속된 메모리 공간에 저장하는 자료 구조입니다.
- List, Map, Set, 스택, 큐, 트리 등이 있다.
배열에 대해 알아 보자.
배열(array)이란 연관된 데이터를 모아서 통으로 관리하기 위해서 사용하는 데이터 타입이다.
변수가 하나의 데이터를 저장하기 위한 것이라면 배열은 여러 개의 데이터를 하나의 변수에 저장하기 위한 것이라고 할 수 있다.
배열에 특징
● 동일한 자료형의 순차적 자료 구조
● 인덱스 연산자[]를 이용하여 빠른 참조가 가능
● 물리적 위치와 논리적 위치가 동일
● 배열의 순서는 0부터 시작 (인덱스라고 한다)
● 자바에서는 객체 배열을 구현한 ArrayList를 많이 활용함
배열 선언과 초기화
배열 선언하기
int[] arr1 = new int[10];
int arr2[] = new int[10];

배열의 크기는 배열의 길이를 의미한다. 길이는 1부터 시작
배열의 인덱스 크기는 (길이-1) 이다. 인덱스는 0부터 시작
실습 코드 1
package basic.ch14;
public class ArrayTest1 {
// 코드의 시작
public static void main(String[] args) {
// 배열이란?
// 연관된 데이터를 모아서 통으로 관리하기 위한 데이터 타입!!
// 배열에 특징 *<중요>*
// 배열은 사용하기 전에 반드시 몇 개의 데이터가 들어갈지
// 크기를 지정해야 사용할 수 있다.
// 배열 메모리 공간 만들기
int[] numbers = new int[3]; // 배열 초기화X, 배열 공간만 선언
int intBox[] = new int[5]; // 배열 초기화X, 배열 공간만 선언
// 값 넣기 (초기화)
// 배열의 길이 ---> 3
// 인덱스의 길이 -> 2
numbers[0] = 1000;
numbers[1] = 1001;
numbers[2] = 1002;
// numbers[3] = 1003; --> 인덱스의 길이를 벗어났음, 오류발생
// 사전기반 지식 - 모든 프로그래밍에 '인덱스 번호에 시작'은 0 부터 시작한다.
// 배열에 선언과 동시에 초기화
int[] grades = new int[] {5, 3, 1}; // 배열 초기화, 배열 공간 선언
int[] grades2 = {5, 3, 1}; // new int[] 생략 가능하다.
// 문제 1번
// 5개의 크기를 가지는 double 타입의 배열을 선언하시오.
// 단, 배열에 이름은 마음대로 작성
double[] doubleBox = new double[5]; // double 데이터를 저장하는 배열
double doubleBox1[] = new double[3];
// 문제 2번
// 위에서 선언한 배열에 값을 인덱스 0 ~ 2 까지 초기화 하시오
// 값은 아무것나 상관없음
doubleBox[0] = 11.0;
doubleBox[1] = 0.5;
doubleBox[2] = 1.3;
// doubleBox[3] = 0.0;
// doubleBox[4] = 0.0;
// 문제 3번
// String 타입에 배열을 선언, 배열에 크기는 3개,
// 선언과 동시에 초기화 하세요.
String strBox[] = new String[] {"구름", "가을", "하늘"};
String strBox1[] = {"가", "나", "다"};
String[] strBox2 = new String[] {"개미","나비", "고양이"};
String[] strBox3 = {"개미","나비", "고양이"};
System.out.print(strBox[0]+" ");
System.out.print(strBox[1]+" ");
System.out.print(strBox[2]+" ");
} // end of main
} // end of class
배열에 길이와 인덱스의 길이
인덱스에 크기는 n - 1 개 이다.
package basic.ch14;
public class ArrayTest2 {
public static void main(String[] args) {
String name[] = new String[5]; // 5칸 짜리 메모리 공간 할당
// (생성) - Create
name[0] = "김씨";
name[1] = "나씨";
name[2] = "박씨";
// name[3] = null
// name[4] = null
// (조회) - Read
System.out.println(name); // 주소값
System.out.println(name[0]); // 인덱스 0
System.out.println(name[1]); // 인덱스 1
System.out.println(name[2]); // 인덱스 2
System.out.println(name[3]); // 인덱스 3
System.out.println(name[4]); // 인덱스 4
// System.out.println(name[5]); // 오류 발생 -> 배열의 크기보다 오버 됨
// (수정) - Upadte
name[0] = "Mr . kim";
name[1] = "Mr . Na";
name[2] = "Mr . Park";
// (삭제) - Delete
name[0] = null;
name[1] = null;
name[2] = null;
// 자바에서 null 값은 할당 되지 않는 상태를 의미한다.
// Object 타입에서 사용 가능
// ex) boolean = false
// 1단계
// 배열에 길이와 인덱스 길이에 대한 이해 --> 인덱스의 길이는 N-1 이다.
System.out.println("배열에 크기 : " + name.length);
System.out.println("인덱스의 크기(n -1) : " + (name.length -1));
// 문제 2
// 배열의 크기가 50개이면 인덱스의 길이는 얼마인가? --> 49
// 배열의 크기가 100이면 인덱스의 길이는 얼마인가> --> 99
// 배열의 크기가 375이면 인덱스의 길이는 얼마인가> --> 374
} // end of main
} // end of class
배열에 길이와 요소(elements)
배열의 길이와 요소의 개수는 꼭 동일하지 않습니다. —> 배열은 반복문과 함께 많이 사용된다.
실습 코드3
package basic.ch14;
public class ArrayTest4 {
// 코드의 시작
public static void main(String[] args) {
String[] arrayStr = new String[26];
// 배열의 길이 : 26
// 배열의 인덱스 : 25
arrayStr[0] = "A";
arrayStr[1] = "B";
arrayStr[2] = "C";
arrayStr[3] = "D";
arrayStr[3] = "E";
arrayStr[25] = "Y";
// 배열안에 요소(배열안에 들어있는 값)의 개수를 출력 하시오
// 값이 있다면 콘솔창에 출력하시오
// 반복문을 활용 하시오.
int count = 0; // 배열의 길이
int eCount = 0; // 요소의 길이
int nullCount = 0; // String 배열 값이 없는 길이
for (int i = 0; i < arrayStr.length; i++) {
if (arrayStr[i] != null) {
System.out.println("arrayStr[" + i + "] = " + arrayStr[i]);
// 요소의 개수 저장
eCount++; // 요소값이 있을 경우 +1 한다.
}
if (arrayStr[i] == null) {
nullCount++; // 요소의 값이 없어서 경우 null 일 경우 +1 한다.
}
count++;
}
System.out.println("배열의 길이 : " + count);
System.out.println("인덱스의 길이 : " + (count - 1));
System.out.println("요소의 개수: " + eCount + " 개");
System.out.println("배열의 빈 공간 : " + nullCount + " 개");
} // end of main
} // end of class'Java' 카테고리의 다른 글
| 2024.04.22 전화번호관리 프로그램 만들기 (0) | 2024.04.22 |
|---|---|
| 2024.04.22 배열에 활용 (도서 관리 프로그램) (0) | 2024.04.22 |
| 2024.04.19 static 메소드(함수) (0) | 2024.04.19 |
| 2024.04.19 static 으로 숫자를 중복사용 하지 않는 방법 (0) | 2024.04.19 |
| 2024.04.18 static 변수 (0) | 2024.04.18 |