"배열"의 두 판 사이의 차이

해시넷
이동: 둘러보기, 검색
2번째 줄: 2번째 줄:
  
 
== 개요 ==
 
== 개요 ==
 +
[[파일:Index.png|700픽셀|섬네일|가운데|자바 배열의 인덱스<ref name="GeeksforGeeks"> 〈[https://www.geeksforgeeks.org/arrays-in-java/ Arrays in Java]〉, 《GeeksforGeeks》</ref>]]
 +
 
배열(Array)은 같은 자료형을 가진 연속된 메모리 공간으로 이루어진 자료구조이다. 가장 기본적이 자료구조로, 구조가 간단하여 데이터를 읽어오는데 걸리는 시간이 가장 빨라서 많은 양의 데이터를 처리할 때 유용하다. 배열을 구성하는 값들을 배열 요소(element)라고 하며, 배열에서의 위치를 가리키는 숫자를 인덱스(Index)라고 한다. Java에서 인덱스는 0부터 시작하고, 0을 포함한 양의 정수만을 가질 수 있다. 배열은 많은 데이터들 중 연관이 있는 데이터들끼리 묶어서 관리할 수 있기 때문에 편리하다. 선언되는 형식에 따라서 1차원, 2차원, 다차원 배열로 선언이 가능하다. 하지만 현실적으로 이해가 가능한 2차원 배열까지를 많이 사용한다. <ref name="TCPSCHOOL.com"> 〈[http://tcpschool.com/java/java_array_oneDimensional 1차원 배열]〉, 《TCPSCHOOL.com》</ref>
 
배열(Array)은 같은 자료형을 가진 연속된 메모리 공간으로 이루어진 자료구조이다. 가장 기본적이 자료구조로, 구조가 간단하여 데이터를 읽어오는데 걸리는 시간이 가장 빨라서 많은 양의 데이터를 처리할 때 유용하다. 배열을 구성하는 값들을 배열 요소(element)라고 하며, 배열에서의 위치를 가리키는 숫자를 인덱스(Index)라고 한다. Java에서 인덱스는 0부터 시작하고, 0을 포함한 양의 정수만을 가질 수 있다. 배열은 많은 데이터들 중 연관이 있는 데이터들끼리 묶어서 관리할 수 있기 때문에 편리하다. 선언되는 형식에 따라서 1차원, 2차원, 다차원 배열로 선언이 가능하다. 하지만 현실적으로 이해가 가능한 2차원 배열까지를 많이 사용한다. <ref name="TCPSCHOOL.com"> 〈[http://tcpschool.com/java/java_array_oneDimensional 1차원 배열]〉, 《TCPSCHOOL.com》</ref>
  
92번째 줄: 94번째 줄:
 
== 참고자료 ==
 
== 참고자료 ==
 
* 클라우드스터딩,〈[https://cloudstudying.kr/questions/280 자바배열이란?]〉, 2019-03-17
 
* 클라우드스터딩,〈[https://cloudstudying.kr/questions/280 자바배열이란?]〉, 2019-03-17
 +
* GeeksforGeeks, 〈[https://www.geeksforgeeks.org/arrays-in-java/ Arrays in Java]〉, 2020-04-24
  
 
== 같이 보기 ==
 
== 같이 보기 ==
 
* [[]]
 
* [[]]
 
{{프로그래밍|검토 필요}}
 

2020년 8월 10일 (월) 17:40 판

배열(Array) 이란 인덱스(Index)와 인덱스에 대응하는 데이터들로 이루어진 자료구조로, 배열에는 같은 종류의 데이터들이 순차적으로 저장된다. [1]

개요

자바 배열의 인덱스[2]

배열(Array)은 같은 자료형을 가진 연속된 메모리 공간으로 이루어진 자료구조이다. 가장 기본적이 자료구조로, 구조가 간단하여 데이터를 읽어오는데 걸리는 시간이 가장 빨라서 많은 양의 데이터를 처리할 때 유용하다. 배열을 구성하는 값들을 배열 요소(element)라고 하며, 배열에서의 위치를 가리키는 숫자를 인덱스(Index)라고 한다. Java에서 인덱스는 0부터 시작하고, 0을 포함한 양의 정수만을 가질 수 있다. 배열은 많은 데이터들 중 연관이 있는 데이터들끼리 묶어서 관리할 수 있기 때문에 편리하다. 선언되는 형식에 따라서 1차원, 2차원, 다차원 배열로 선언이 가능하다. 하지만 현실적으로 이해가 가능한 2차원 배열까지를 많이 사용한다. [3]

특징

문법

배열은 선언과 생성을 따로 작성하는 방법과 선언과 생성을 동시에 작성하는 방법이 있다. 선언과 생성을 따로 작성할 경우에는 선언을 먼저한 후 new 키워드를 이용하여 실제 배열로 생성한다. 선언과 생성을 동시에 작성할 경우에는 '='를 기준으로 왼쪽엔 선언을, 오른쪽엔 배열을 생성한다. 선언을 하는 방법이 두가지가 있는데 두가지 방법 모두 배열을 만들기 위해 사용할 수 있지만, 첫번째 방법을 권장한다. [3]

선언 방법

1. 타입[] 배열이름;
2. 타입 배열이름[];

  • 전: 선언 / 후: 생성
1. 타입[] 배열이름;
   배열이름 = new 타입[배열길이];
2. 타입 배열이름[];
   배열이름 = new 타입[배열길이];
  • 동시 : 선언, 생성
타입[] 배열이름 = new 타입[배열길이];

초기화 방법

1) 배열 생성과 동시에 초기화

// 방법1
타입[] 배열이름 = {값1, 값2, …};
// 방법2
타입[] 배열이름 = new 타입[](값1, 값2, …}; 

2) 생성한 후에 개별적으로 초기화

// 방법1 
타입[] 배열이름 = new 타입[배열길이];
배열이름[0] = 값1;
배열이름[1] = 값2;
배열이름[2] = 값3;
// 방법2
타입[] 배열이름;
배열이름 = new 타입[]{값1, 값2, …};

배열의 타입

< 배열의 타입 > [3]
배열의 타입 초깃값
char '\u0000'
byte, short, int 0
long 0L
float 0.0F
double 0.0 또는 0.0D
boolean false
배열, 인스턴스 등 null

장단점

  • 장점

Java의 배열(Array) 장점 첫번째, 가장 기본적인 자료구조로, 구조가 간단하여 구현이 쉽다. 두번째, 검색 속도가 빨라서 인덱스(Index)를 이용한 무작위 접근(Random access)이 가능하므로 검색 부분에서 좋은 성능을 기대할 수 있다. 순차접근(Sequential access)의 경우에도 데이터를 하나의 연속된 메모리 공간에 할당하기 때문에 연결 리스트(Linked list)보다 빠른 성능을 보여준다. 세번째, 배열은 Java의 자료형 중 참조 자료형에 속하는데 참조를 위한 추가적인 메모리 할당이 따로 필요하지않기 때문에 불필요한 메모리 낭비가 없다. [4]

  • 단점

Java의 배열(Array) 단점 첫번째, 자료의 삽입(Insert)과 삭제(Delete)에 비효율적이다. 배열은 연속된 메모리 공간으로 이루어진 자료구조이기에 메모리 자료의 삽입과 삭제를 수행할 경우 다음 항목의 모든 배열의 요소(Element)를 이동시켜야한다. 따라서 자료양에 비례하여 삽입과 삭제에 많은 시간이 소요되기에 그만큼 성능이 떨어지게 된다. 두번째, 배열의 크기를 바꿀 수 없다. 배열은 생성할 때 지정된 크기를 바꿀 수 없기 때문에 예상 공간보다 크게 지정했을땐 메모리가 낭비되고, 예상 공간보다 작게 지정했을땐 메모리가 부족해 저장해야할 자료를 저장할 수 없게 된다. 세번째, 메모리의 재사용이 불가능하다. 배열은 초기에 지정한 크기만큼 메모리를 할당 받아서 사용하기 때문에 데이터의 존재 유무와 상관없이 일정한 크기의 메모리 공간을 차지하고 있다. 즉, 이미 삭제된 데이터라고 하더라도 배열 자체가 메모리에서 제거되지 않는 이상 삭제된 데이터의 메모리 공간을 재사용 하는건 불가능하다. [4]

종류

1차원 배열

  • 정의

1차원 배열은 같은 자료형들을 모아둘 수 있는 묶음이 하나밖에 없는 경우를 의미한다. [5]

다차원 배열

  • 정의

다차원 배열(multi-dimensional array)은 2차원 이상의 배열을 의미한다.

  • 2차원 배열


가변 배열

각주

  1. java 배열 Array〉, 《개인블로그》, 2016-07-03
  2. Arrays in Java〉, 《GeeksforGeeks》
  3. 3.0 3.1 3.2 1차원 배열〉, 《TCPSCHOOL.com》
  4. 4.0 4.1 배열(Array)의 장단점〉, 《개인블로그》
  5. 배열(Array), 배열 상속 도식도, 배열의 종류〉, 《개인블로그》

참고자료

같이 보기

  • [[]]