배열에 대해 알아 보자 - 14

배열에 대해 알아 보자 - 14

💡 학습 목표
    1. 자료 구조에 대한 개념을 알아 보자.
    2. 배열에 대해 알아 보자.
    3. 배열의 길이와 인덱스
    4. 배열의 길이와 요소(elements)

1. 자료 구조에 대한 개념을 알아보자.

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

  1. 자료 구조의 특징:
    • 효율성: 데이터를 효율적으로 저장, 검색, 삽입, 삭제할 수 있어야 합니다. (CRUD)
    • 추상화: 데이터의 논리적인 구조와 물리적인 구현을 분리하여 추상적으로 정의해야 한다.
    • 재사용성: 여러 응용 프로그램에서 재사용할 수 있도록 일반적이고 유연한 구조여야 한다.
  2. 자주 사용되는 자료 구조:
    • 배열(Array): 동일한 데이터 타입의 요소들을 연속된 메모리 공간에 저장하는 자료 구조.
    • List, Map, Set, 스택, 큐, 트리 등이 있다.

2. 배열에 대해 알아 보자.

  • 배열(array)이란 연관된 데이터를 모아서 통으로 관리하기 위해서 사용하는 데이터 타입이다.
  • 변수가 하나의 데이터를 저장하기 위한 것이라면 배열은 여러 개의 데이터를 하나의 변수에 저장하기 위한 것이라고 할 수 있다.

배열의 특징

  • 동일한 자료형의 순차적 자료 구조
  • 인덱스 연산자[]를 이용하여 빠른 참조가 가능
  • 물리적 위치와 논리적 위치가 동일
  • 배열의 순서는 0부터 시작 (인덱스라고 한다)
  • 자바에서는 객체 배열을 구현한 ArrayList를 많이 활용함

배열 선언과 초기화

배열 선언하기

int[] arr1 = new int[10];
int arr2[] = new int[10];

 

주의 마지막 요소의 인덱스는 배열의 크기보다 작음

 

실습 코드 1

package basic.ch14;

public class ArrayTest1 {

	public static void main(String[] args) {

		// 배열이란?
		// 연관된 데이터를 모아서 통으로 관리하기 위한 데이터 타입!!
		
		// 배열의 특징(중요)
		// 배열은 사용하기 전에 반드시 몇 개의 데이터가 들어갈지
		// 크기를 지정해야 사용할 수 있다.
		
		// 배열 메모리 공간 만들기
		int[] numbers = new int[3]; // 둘다 되는데 이걸로 하자
		int intBoxes[] = new int[5];
		
		// 값 넣기 (초기화)
		// 배열의 길이 -> 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[] doubleboxes = new double[5];
		
		// 문제 2
		// 위에서 선언한 배열의 값을 인덱스 0 ~ 2 까지 초기화 하시오.
		// 값은 아무거나 상관 없음
		doubleboxes[0] = 0.0;
		doubleboxes[1] = 2.57;
		doubleboxes[2] = 3.14;
		// doubleboxes[4] == 0.0
		// doubleboxes[5] == 0.0
		
		// 문제 3
		// String 타입의 배열을 선언, 크기는 3
		// 선언과 동시에 초기화 하세요.
		String[] names = new String[]{"홍길동","이순신","강감찬"}; 
		String[] names2 = {"홍길동","이순신","강감찬"}; 
		
	} // end of main

} // end of class

3. 배열의 길이와 인덱스

인덱스의 최대값은 (배열의 크기 - 1)

실습 코드 2

package basic.ch14;

public class ArrayTest2 {

	public static void main(String[] args) {

		String[] names = new String[5]; // 5칸 짜리 메모리 공간 할당
		
		// 생성 - Create
		names[0] = "김씨";
		names[1] = "나씨";
		names[2] = "박씨";
		// names[3] == null
		// names[4] == null
		
		// 조회 - Read
		System.out.println(names);
		System.out.println(names[0]);
		System.out.println(names[1]);
		System.out.println(names[2]);
		System.out.println(names[3]);
		System.out.println(names[4]);
		// System.out.println(names[5]); // 중간에 오류 발생시 프로그램 멈춤
		
		// 수정 - Update
		names[0] = "Mr. Kim";
		names[1] = "Mr. Na";
		names[2] = "Mr. Park";
		
		// 삭제 - Delete
		names[0] = null;
		names[1] = null;
		names[2] = null;
		
		// 자바에서 null 값은 할당 되지 않은 상태를 의미합니다.
		// Object 타입에서 사용 가능
		
		// 1단계
		// 배열의 길이와 인덱스에 대한 이해 --> 인덱스의 최대값은 n - 1
		System.out.println("배열의 크기 : " + names.length);
		System.out.println("인덱스의 최대값 : " +( names.length - 1));
		
		// 문제 2
		// 배열의 크기가 50이면 마지막 요소의 인덱스 값은? --> 49
		// 배열의 크기가 100이면 마지막 요소의 인덱스 값은? --> 99
		// 배열의 크기가 375이면 마지막 요소의 인덱스 값은? --> 374
		
	} // end of main

} // end of class

4. 배열의 길이와 요소(elements)

배열의 길이와 요소의 개수는 꼭 동일하지 않음. —> 배열은 반복문과 함께 많이 사용된다.

실습 코드 3

package basic.ch14;

public class ArrayTest3 {

	public static void main(String[] args) {

		char[] alphabets = new char[26];
		char ch1 = 'A';
		alphabets[0] = ch1;
		
		char ch2 = 'B';
		alphabets[1] = ch2;
		
		char ch3 = 'C';
		alphabets[2] = ch3;
		
		char ch26 = 'Z';
		alphabets[25] = ch26;
		
		// 배열은 반복문과 함께 많이 사용 된다.
		int forCount = 0;
		int elementCount = 0;
		for(int i = 0; i < alphabets.length; i++) {
			// alphabets[i];
			System.out.println(alphabets[i]);
			if (alphabets[i] != 0) {
				elementCount++;
			}
			forCount++;
		}
		System.out.println("for 동작 횟수 " + forCount);
		System.out.println("배열안에 요소의 개수는 ? " + elementCount);
	} // end of main

} // end of class

연습 문제

package basic.ch14;

public class ArrayTest4 {

	public static void main(String[] args) {

		String[] arrayStr = new String[26];
		
		arrayStr[0] = "A";
		arrayStr[1] = "B";
		arrayStr[2] = "C";
		arrayStr[3] = "D";
		arrayStr[3] = "E";
		
		// 배열안의 요소의 개수를 출력 하시오
		// 값이 있다면 콘솔창에 출력
		// 반복문 활용
		int elementCount = 0;
		for (int i = 0; i < arrayStr.length; i++) {
			if (arrayStr[i] != null) {
				System.out.println(arrayStr[i]);
				elementCount++;
			}
		}
		System.out.println("요소의 개수는? " + elementCount + "개");
	} // end of main

} // end of class

 

Java 객체지향 핵심 - 2 으로 돌아가기