[Java 객체지향] 배열

2022. 1. 28. 22:28·Java & Kotlin

배열 (Array)

  • 동일한 자료형의 순차적 자료구조
  • 요소(Element)와 인덱스로 구성
  • 물리적 위치와 논리적 위치가 동일하다. (각 element의 address가 인접) ↔ linked list는 논리적 위치는 인접하지만 물리적 위치는 다를 수 있음
  • 배열의 주소는 첫번째 element를 가리킨다.
  • 자바에서는 자바 유틸 패키지 안에서 제공되는 ArrayList를 사용한다.

 

장단점

- 장점 : 인덱스 연산자 [ ]를 이용해 특정 element를 참조하는 것이 빠르다.

- 단점 : 배열은 중간에 데이터가 비면 안되므로 수정할 때 Operation 수행 시간이 길다. O(n)

          insert : 데이터 한칸씩 뒤로 밀림 / delete : 데이터 한칸씩 앞으로 당김

 

 

선언

  • 배열을 선언할 때는 길이(length)를 명시하여 메모리에 배열의 사이즈를 잡고 사용한다.
  • 선언 시 int, double은 각각 0, 0.0으로, 객체는 null로 초기화된다.
// 두가지 모두 동일한 표현

int[] arr1 = new int[10]
int arr1[] = new int[10]

 

초기화

// 세가지 모두 동일한 표현

int[] nums = new int[] (10, 20, 30); // 개수 생략

int[] nums = (10, 20, 30); // new int[] 생략 가능

int[] nums;
nums = new int[] (10, 20, 30); // 선언한 후에 초기화 할 때는 new int[] 생략 불가

 


 

예제 코드

(1) 배열을 이용해 합을 구하는 프로그램

  • [ ] 인덱스 연산자 활용하여 element가 저장된 메모리 위치에 접근
  • enhanced for : 사이즈가 n인 배열의 요소를 처음부터 끝까지(0~n-1) 순차적으로 순회할 때 간단하게 사용할 수 있다.
package ch20;

public class ArrayTest {

	public static void main(String[] args) {
		
		int[] arr = new int[10];	// 배열 선언
		int total = 0;
		
		for (int i = 0, num = 1; i < arr.length; i++) {
//			System.out.println(arr[i]);	arr의 초기화값 출력
			arr[i] = num++;
		}
		
		for (int num : arr) {	// enhanced for
			total += num;
		}
		
		System.out.println(total);	// 출력 : 55
		
	}

}

 

(2) 문자 배열을 만들어 A-Z까지 저장하고 다시 출력하기

package ch20;

public class CharArrayTest {

	public static void main(String[] args) {
		
		char[] alphabets = new char[26];
		char ch = 'A';
		
		for(int i = 0; i < alphabets.length; i++) {
			alphabets[i] = ch++;
		}
		
		for(char alpha : alphabets) {
			System.out.println(alpha + "," + (int)alpha);
		}
	}

}

 

※ 배열의 길이와 요소의 개수는 동일하지 않을 수 있다.

  • 배열 요소의 개수보다 배열의 크기가 클 수 있다.
  • 무조건 .length 속성을 쓰면 오류 발생 가능
  • 해결 : 배열의 element 개수를 나타내는 count 변수를 사용해준다.

 

저작자표시 비영리 변경금지 (새창열림)

'Java & Kotlin' 카테고리의 다른 글

[Java 객체지향] 객체 배열  (0) 2022.01.29
[Java 객체지향] Singleton Pattern 응용 문제  (0) 2022.01.27
[Java 객체지향] Singleton Pattern (static 응용)  (0) 2022.01.27
'Java & Kotlin' 카테고리의 다른 글
  • [Java 객체지향] 2차원 배열
  • [Java 객체지향] 객체 배열
  • [Java 객체지향] Singleton Pattern 응용 문제
  • [Java 객체지향] Singleton Pattern (static 응용)
Sue
Sue
개발 공부 로그
  • Sue
    Sue's devlog
    Sue
  • 전체
    오늘
    어제
    • 분류 전체보기 (122)
      • Algorithm (2)
      • WEB (8)
      • Java & Kotlin (83)
      • Spring (26)
      • Database (1)
      • Infra (0)
      • Git (1)
      • devlog (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Sue
[Java 객체지향] 배열
상단으로

티스토리툴바