배열이란
동일한 자료형의 변수를 메모리의 연속된 공간에 할당한 형태
변수의 관리를 효율적으로 하기 위해 사용
변수
메모리의 공간
공간을 만들어 데이터를 저장하는 용도로 사용하기 위해 할당
배열
메모리의 연속된 공간에 동일한 자료형으로 할당 된 변수
동일한 자료를 효율적으로 관리하기 위해 사용
1차원 배열 선언(배열 참조 변수)
자료형[] 배열명;
자료형 배열명[];
ex)
int[] arr; //참조변수
int arr[]; //참조변수
arr = new int[4];
배열은 new를 통해 생성(new연산자는 동적 할당 기능)
java의 Garbage Collector가 Garbage Collection Heap메모리에 할당
G.C가 자동으로 초기화한다.
기본 자료형과 클래스형 자료형 모두 배열로 생성이 가능하다.
배열의 이름은 레퍼런스형 변수이다.(4byte)
배열의 [첨자] 는 0부터 시작된다.
1차원 배열 초기화 방법
자료형[] 배열명 = {값1,값2,값3...}; (선언과 동시에만 가능한 형태)
배열명 = new 자료형[개수]; (선언 후 초기값 대입 가능)
배열명 = new 자료형[]{값1,값2,값3.....}; (선언과 동시에 초기화)
ex)
char[] a = { A, B, C };
int[] a;
a = new int[3];
float b[];
b = new float[]{ 1.2f, 3.4f, 4.5f };
배열 초기화 개념 이해)
예제)
실행결과
예제)
실행결과
위와 같이 배열의 각 요소는 하나의 변수이다.
배열을 효율적으로 사용하려면 반복문과 함께 사용하게 된다.
예제) for문 이용하기
배열은 new를 통해 생성되는 객체이다.
객체는 멤버로 필드(변수)와 메서드(함수)를 가질 수 있다.
배열객체는 모두 length라는 변수를 갖고 있으며 배열 요소의 개수가 저장된다.
배열참조변수.length 는 배열이 가진 요소의 개수를 얻는 것.
즉 위 예제에서 arr.length값은 5이다.
실행결과
Java 1.5버전에서 추가된 확장 for문을 활용하는 예제
위에서 for문은 타 언어에서 foreach라고도 불리는 형식이다.
arr에 있는 요소를 순회하며 하나의 값을 앞의 변수에 담고 값이 있으면 종속문장을 실행한다.
즉 arr의 요소의 개수만큼 for문을 반복 시킬 수 있음.
명령행 인자 이해하기
프로그램 실행 시 필요한 값을 전달할 수 있는데 이를 명령행 인자라 한다.
리눅스나 윈도우에서 명령어 뒤에 옵션을 지정하는 것을 볼 수 있다.
C:\>ipconfig /all
위와 같은 명령어를 윈도우 cmd화면에서 사용이 가능하다.
ipconfig.exe는 실행프로그램 이름이고 뒤에 /all은 옵션으로 실행 시 전달하는 값.
프로그램이 실행되면서(main함수가 실행 되면서) 전달한 값을 이용할 수 있게 함.
자바에서도 위와 같은 명령행 인자를 전달하며 실행이 가능하다.
메인 메서드(main(String[] args)의 args역시 String배열을 참조할 수 있는 배열참조변수이다.
프로그램 실행 시 명령행 인자로 여러 값을 전달 받을 수 있도록 배열로 정의되어 있는 것이다.
다음과 같이 main메서드의 String배열은 프로그램 실행 시 전달하는 인자를 받는 기능을 한다.
잘 사용하진 않지만 개념만 이해하도록 한다.
이클립스에서도 위와 같은 테스트 가능
배열 활용 예제)
위 동작을 구현한 예제 코드)
실행결과
추가 실습 해보기
- 위 동작은 1명의 정보만 저장이 가능한데 이를 3명이 저장될 수 있도록 작성해보자.
- 다음과 같이 동작하도록 배열을 사용
- 위 코드에 정렬하는 기능을 추가
다차원 배열
배열을 배열로 만들면 2차원 배열
2차원 배열을 배열로 만들면 3차원 배열
복잡해 지므로 관리가 어렵다.(일반적으로 2차원 배열까지 자주 사용 함)
다차원 배열 선언
자료형[][] 배열명;
자료형[] 배열명[];
자료형 배열명[][];
ex)
char[][] ch;
byte[] by[];
long lo[][];
다차원 배열 사용 시 주요 개념
배열의 마지막 요소만 실제 데이터이고 나머지는 레퍼런스.
[]의 개수는 차원의 수를 의미.
int[] a, b[];
a는 1차원배열 b는 2차원 배열.
다중 for문과 함께 사용.
동적 배열 이용 가능(길이를 정해두지 않고 필요한 만큼 생성하여 사용 하는 방식)
다차원 배열의 초기화
자료형[][] 배열명 = { {값1, 값2..}, ...{값3, 값4} };
배열명 = new int[][] { {값1, 값2..}, ...{값3, 값4} };
배열명 = new int[개수][개수];
배열명 = new int[개수][]; //가변배열
ex)
int[] arr1 = new int[3];
int[] arr2 = new int[3];
int[] arr3 = new int[3];
int[][] arr = new int[3][];
arr[0] = arr1;
arr[1] = arr2;
arr[2] = arr3;
예제)
실행결과
가변배열
다른 길이의 배열을 배열로 관리하는 형식을 말함
실행결과
다음과 같이 동작하는 프로그램을 작성해본다.(동적배열 및 가변배열 개념이해)
'교육자료 > Java' 카테고리의 다른 글
Java 클래스 구성요소(멤버필드와 멤버메서드) (0) | 2017.06.15 |
---|---|
Java 클래스 (Class기초 문법과 OOP 개념) (0) | 2017.06.15 |
Java 메서드(Method) (0) | 2017.06.14 |
Java 제어문 break continue (0) | 2017.06.13 |
Java 제어문 while do~while (0) | 2017.06.13 |