본문 바로가기
알고리즘

알고리즘_3 번째_배열이란

by 공부합시다홍아 2020. 3. 19.

1.    Array ( 배열 )

l  동일한 자료형으로 구성된 연속된 자료의 집합

l  구성하는 각각의 값을 배열 요소(element)라고 하며, 배열에서의 위치를 가리키는 숫자를 ‘ Index ‘ 라고 한다. Index는 언제나 0부터 시작, 0을 포함한 양의 정수만 가짐, 범위 0~n-1

l  배열은 동일한 자료형으로 선언된 데이터 공간을 메모리 상에 연속적으로 나열하여 데이터 관리의 효율성을 높임.

l  자바의 Array ( 배열 )은 힙 메모리(Reference type)를 할당

l  간단한 예시

-      배열 선언 : Int [ ] data ;

-      메모리 할당 : data = new int [10];

-      배열 요소의 이용 : data [0] = 10

l  배열의 데이터 개수는 length 속성(필드)으로 제공한다

배열명.length

 

l  배열은 객체(Object)이다

l  Array type = t [ ] 의 형태를 가진다.

-      t는 배열의 원소 타입

-      원소 타입이 int 라면 배열 타입은 int [ ]이다.

l  선언되는 형식에 따라 1차원 배열, 2차원 배열, 그 이상의 다차원 배열로 선언

 

1.    Array ( 배열 ) 사용 이유

l  기존

(1). 변수는 한 개의 데이터만 저장 가능

(2). 저장해야 할 데이터 수 증가 시 그만큼 많은 양의 변수 선언

→ 비효율적

 

l  배열

변수/데이터 수를 줄이고 효율성을 높이기 위해 사용한다. 같은 타입의 데이터를 연속된 공간에 나열하여 각 데이터에 index를 부여해 놓은 자료구조이다.

 

→ 배열을 사용하는 이유를 쉽게 설명하자면

-      사용자가 어떠한 값들에 대해 변수 하나씩 사용하여 저장하는 것은 소스의 양이 많아지고 사용 시에 번거로움을 동반한다.

그렇기에 배열의 첨자 연산자 [ ]를 사용하여 하나의 공간을 만들고 그 안에 어떠한 값들을 저장해주면 많은 변수를 사용하지 않아도 될 뿐만 아니라, 반복 조건문을 사용하여 변수를 제어하여 훨씬 효과적으로 소스를 구성할 수 있다.

1.    배열의 종류

ㄱ.   1차원 배열

문법

(1). 타입 [ ] 배열 이름 ;

(2). 타입 배열 이름 [ ] ;

→ 타입은 배열 요소로 저장되는 변수의 타입을 명시한다.

→ 배열 이름은 배열이 선언된 후에 배열에 접근하기 위해 사용됩니다.

              (3). 배열 이름 = new 타입 [ 배열길이 ] ;

                        배열의 길이는 해당 배열이 몇 개의 배열 요소를 가지게 되는지 명시한다.

                       → 타입[ ] 배열이름 = new 타입 [ 배열 길이 ] ;

                      

                       Ex) Int arr [ 3 ] = new Int [ 3 ]

l  Int arr

n  참조 변수 배열 선언의 의미

n  Int형으로 이루어진 배열 arr을 선언

n  Arr은 배열의 이름

l  = new Int[3]

n  New는 배열을 인스턴스형으로 생성

n  Int[3]int형 변수를 3개 만들라는 뜻

n  , 변수를 arr0, arr1, arr2 형식으로 3개 만듬

n  배열은 원소들이 모여 구성하는 원소들은 1이아닌

0부터 하나의 방을 생성하는 장점이 있다.

→ int 형 데이터를 3개 저장할 수 있는 배열을 선언과 동시에 생성

ArrayIndexOutofBounds 예외 발생

: java는 자동으로 배열의 인덱스를 검사해 배열이 주어진 범위에서 벗어나지 않도록 하지만

위와 같이 인덱스의 범위를 벗어날 경우 예외를 발생시킨다.

 

ㄱ.   2차원 배열

l  배열의 요소로 1차원 배열을 가지는 배열

l  문법

n  타입 [ ] [ ] 배열 이름;

n  타입 배열이름 [ ] [ ] ;

n  타입 [ ] 배열 이름 [ ] ;

- 타입은 배열 요소로 저장되는 변수의 타입을 설정

- 배열 이름은 배열이 선언된 후에 배열에 접근하기 위해 사용

1.    배열의 초기화

: 변수와 마찬가지로 배열도 선언과 동시에 초기화할 수 있다.

: 괄호 { } 을 사용하여 초기 값을 나열한 것을 초기화 블록이라 합니다.

l  문법

타입 [ ] 배열이름 = { 배열 요소1, 배열요소2, …. } ;

타입 [ ] 배열이름 = new 타입 [ ] { 배열요소1, …..} ;

l  초기화 블록에 맞춰 자동으로 배열의 길이가 설정됩니다.

1.    배열의 복사

: 배열은 한 번 생성하면 그 길이를 변경할 수 없다.

: 더 많은 데이터를 저장하기 위해서는 더욱 큰 배열을 만들고, 이전 배열의 데이터를

새로 만든 배열로 복사해야한다.

(1). System 클래스의 arraycopy() 메소드 [ System.arraycopy(arr1, 0, …..) ]

(2). Arrays 클래스의 copyOF() 메소드 [ Array.copyOf(arr1, 10) ]

(3). Object 클래스의 clone( ) 메소드 [ int[ ] arr1.clone() ; ]

(4). For 문과 인덱스를 이용한 복사 [ new int [ newLen ]; ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90