[Java] 배열

배열이란?

인덱스와 인덱스에 대응하는 데이터들로 이루어진 연속적인 자료구조.

같은 종류의 데이터들이 순차적으로 저장.

 

배열 선언 및 생성

1. 배열에 대한 레퍼런스 변수 선언

int intArray[];
int []intArray;

※ 배열 선언 시 [ ]안에 배열의 크기 지정하면 안된다.

 

레퍼런스 : 배열의 주소

레퍼런스 변수 : 배열에 대한 주소 값을 가지는 변수

 

2. 배열 생성

데이터를 저장할 배열 공간을 할당받는 과정.

new 연산자를 이용해 배열을 생성하며 [ ]안에 생성할 원소 개수 지정.

intArray = new int[5];

int intArray = new int[5];	// 배열 선언과 생성 동시에 가능

 

배열 초기화

{ }에 원소를 나열하면 초기화된 배열 생성 가능

int intArray[] = {1, 2, 3, 4, 5};

※ { }에 나열된 값의 개수로 배열 원소 개수가 정해지므로 [ ]안에 크기 지정하면 안된다.

 

배열 인덱스와 원소 접근

 

배열 인덱스

  • 정수만 가능.
  • 0부터 시작.
  • 음수 인덱스를 사용하거나 범위를 넘어서 사용할 경우 오류 발생.
  • 배열 생성이 되기 전 인덱스로 원소 접근 시 컴파일 오류 발생.

레퍼런스 치환과 배열 공유

레퍼런스 변수와 배열 공간이 분리되어 있어 다수의 레퍼런스 변수가 하나의 배열 공간 가리키는 배열 공유가 쉽게 이루어진다.

int array[] = new int[5];
int newArray[] = array;		// 레퍼런스 치환. newArray는 array와 동일한 배열 참조.

배열의 크기

length 필드를 이용하여 배열의 크기 알아낼 수 있다.

int array = new int[5];
int size = array.length;	// size = 5

 

배열과 for-each문

for-each문

배열이나 나열의 크기만큼 루프 돌면서 각 원소를 순차적으로 접근할 때 사용.

for(변수 : 배열레퍼런스){
	...
}
int n[] = {1, 2, 3, 4, 5};
int sum = 0;
for(int k : n){
	sum += k;
}

k=n[0], ... ,n[4] 값으로 바꾸면서 배열 n의 크기만큼 반복.

 

다차원 배열

2차원 배열

첫번째 [ ] : 행의 개수

두번째 [ ] : 열의 개수

 

비정방형 배열

행마다 열의 개수가 서로 다른 배열

int i[][] = new int[4][];	//각 행을 가리키는 레버런스 배열 생성
i[0] = new int[1];	//첫번째 행에 1개 크기의 배열 생성
i[1] = new int[2];	//두번째 행에 2개 크기의 배열 생성
i[2] = new int[3];
i[3] = new int[4];

/* 초기화를 통해 비정방형 배열 생성 */
int intArray = { {0}, {1, 2}, {3, 4, 5}, {6, 7, 8, 9} };

 

메소드에서 배열 리턴

메소드에서 배열을 리턴하면, 배열에 대한 레퍼런스(배열의 주소)만 리턴

int[] makeArray(){	//리턴 타입, 메소드 이름 지정 
	int temp[] = new int[4];
    return temp;
}

int[] intArray;		//makeArray() 메소드의 리턴 타입과 동일한 타입 선언
intArray = makeArray();

※ 메소드는 레퍼런스만 리턴하므로, 리턴타입 선언시 [ ]안에 배열의 크기 지정하지 않는다.

※ 리턴하는 배열의 타입이 리턴받는 레퍼런스 변수의 타입과 일치해야 한다.

 

main() 메소드

main() 메소드 특징

  • public 속성

    : 메소드가 다른 클래스에서 호출 가능하다. = 다른 클래스에서 메소드 접근 허용

  • static 속성

    : 객체 생성 전부터 호출 가능. = 자신을 포함하는 클래스의 객체가 생성되기 전에, 처음부터 자바 가상 기계에 의해        호출된다.

  • void 리턴 타입

    : 아무 값도 리턴하지 않는다.

  • 문자열 배열(String [ ])이 매개변수로 전달

    : 명령행에 입력된 인자들을 문자열 배열로 만들어 main() 메소드에 전달.

  • 매개변수 args

    : 만들어진 문자열 배열 레퍼런스가 매개변수 args에 전달.

반응형

'Back-End > Java' 카테고리의 다른 글

[Java] 객체  (1) 2022.02.18
[Java] 클래스와 생성자  (0) 2022.02.15
[Java] 예외 처리  (0) 2022.02.14
[Java] 반복문  (0) 2022.02.14
자바 기본 프로그래밍  (0) 2022.02.12