JAVA/JAVA 객체지향 핵심
배열에 대해서 알아보자
tjdudtn
2024. 9. 14. 17:22
💡 학습 목표
자료 구조에 대한 개념을 알아 보자.배열에 대한 기본 개념을 알아 보자.배열에 길이와 인덱스의 길이.배열에 길이와 요소(elements).
1. 자료 구조에 대한 개념을 알아 보자.
자료 구조는 데이터를 어떻게 조직화하고 저장하며 접근할지를 결정하는 방법입니다.
- 자료 구조의 특징:
- 효율성: 데이터를 효율적으로 저장, 검색, 삽입, 삭제할 수 있어야 합니다.
- 추상화: 데이터의 논리적인 구조와 물리적인 구현을 분리하여 추상적으로 정의해야 합니다.
- 재사용성: 여러 응용 프로그램에서 재사용할 수 있도록 일반적이고 유연한 구조여야 합니다.
- 자주 사용되는 자료 구조:
- 배열(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[] arrayD = new double[5]; // -> [][][][][]
// 문제 2
// 위에서 선언한 배열에 값에 인덱스 0 ~ 2 까지 초기화 하시오
// 값은 아무거나 상관 없음
arrayD[0] = 10.0;
arrayD[1] = 0.5;
arrayD[2] = 1.3;
// arrayD[4] = 0.0
// arrayD[5] = 0.0
// 문제 3
// String 타입에 배열을 선언, 배열에 크기는 3개 ,
// 선언과 동시에 초기화 하세요
String[] strArray = new String[] {"a", "b", "c"};
String[] strArray2 = {"a", "b", "c"};
} // end of main
} // end of class
3. 배열에 길이와 인덱스의 길이
인덱스에 크기는 n - 1 개 이다.
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("인덱스에 크기(n - 1) : " + (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[] alpahbets = new char[26];
char ch1 = 'A';
alpahbets[0] = ch1;
char ch2 = 'B';
alpahbets[1] = ch2;
char ch3 = 'C';
alpahbets[2] = ch3;
char ch26 = 'z';
alpahbets[25] = ch26;
System.out.println("---------------");
System.out.println(alpahbets[3]);
if(alpahbets[3] == 0) {
System.out.println("동작함");
}
System.out.println("---------------");
// 배열은 반복문과 함께 많이 사용 된다.
int forCount = 0;
int eCount = 0;
for(int i = 0; i < alpahbets.length; i++) {
if(alpahbets[i] != 0 ) {
eCount++;
}
//alpahbets[i];
System.out.println(alpahbets[i]);
forCount++;
}
System.out.println("for 동작 횟수 " + forCount);
System.out.println("배열안에 요소의 개수는 ? " + eCount);
}// 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";
arrayStr[25] = "Y";
System.out.println(arrayStr[4]); // --> null
// 배열안에 요소의 개수를 출력 하시오
// 값이 있다면 콘솔창에 출력
// 반복문 활용
int eCount = 0;
for (int i = 0; i < arrayStr.length; i++) {
if(arrayStr[i] != null) {
// 요소의 개수 저장
eCount++;
System.out.println(arrayStr[i]);
}
}
System.out.println("요소의 개수 : " + eCount);
} // end of main
} // end of class