본문 바로가기

컴퓨터언어/JAVA(자바)

[JAVA강좌] 26강 자바 배열

728x90
반응형

 

 

 

 

 

- 여태까지 사용한 변수는 자료를 한 개 담기 위한 저장공간이었습니다. 

- 하지만 값을 여러 개를 한 번에 컨트롤하고 싶을 수도 있겠죠?

- 이런 경우 여러 자료를 한번에 처리하는 배열이라는 기능을 사용합니다.

- 학생 100명을 student001~student100까지 선언하는 것보다는 students라고 한 번만 선언하는 것이 편합니다. 

- 이번 강좌에서는 자바의 배열에 대해서 배워보도록 하겠습니다. 

 

 

 

 

 

 

 

 

 

1. 배열 선언과 초기화


- 배열도 변수처럼 사용하려면 선언을 해야 합니다.

- 다른 언어(JS)와 다른 점은 개수도 지정해줘야 한다는 점입니다.

 

 

 

1) 배열 선언 문법

 ## 배열 문법

자료형[] 배열명 = new 자료형[개수];
자료형 배열명[] = new 자료형[개수];

- 배열도 참조형으로 클래스화되어 있는 객체입니다.

- 그래서 new라는 키워드를 사용해서 배열 인스턴스를 생성해주는 겁니다.

- 위의 문법 중 선택해서 사용하면 됩니다. 

- 둘의 차이는 한개 선언 시에는 문제가 없는데 여러 개를 한 번에 선언 시 차이가 있습니다.

- 그건 아래에서 코드로 보겠습니다.

- 패키지(ch18_array)와 클래스(Ex01_Array.java)를 생성해 주세요.

 

 

 

## 배열 한 개 선언 코드 - Ex01_Array.java

package ch18_array;

public class Ex01_Array {

	public static void main(String[] args) {
		int[] nums01 = new int[10];
		int nums02[] = new int[10];
		
		System.out.println(nums01);
		System.out.println(nums02);
	}
}

- 다른 문법으로 배열을 선언해 봤습니다.

- 배열 한 개는 4바이트고, 10개니까 총 40바이트를 차지합니다.

 

 

 

 

## 배열 한개 선언 결과 - Ex01_Array.java

- 둘 다 주소를 참조하고 있는 것을 확인할 수 있습니다. 

 

 

 

 


 

 

 

2) 배열 초기화하기

- 이번에는 배열 값을 초기화시키는 작업을 해보겠습니다.

 

## 배열 초기화 문법

자료형[] 배열명 = new 자료형[] {값1, 값2, 값3, ...};

자료형[] 배열명 = {값1, 값2, 값3, ...};

 

- 초기화할 때는 값을 배당시켜 주기 때문에 개수를 적지 않습니다.

new 자료형 [] 을 생략해도 처리가 됩니다.

- 자료형, 배열명에 붙는 대괄호는 어디에 있든 상관은 없습니다. 

 

 

 

## 배열 초기화 코드 - Ex02_Array.java

package ch18_array;

public class Ex02_Array {

	public static void main(String[] args) {
		int[] nums01 = new int[] {1,2,3};
		int[] nums02 = {1,2,3};
		//int[] nums03 = new int[3] {1,2,3};
		
		System.out.println(nums01);
		System.out.println(nums02);
	}
}

- nums03처럼 개수를 작성하면 에러가 납니다.

- 그래서 앞에 주석처리를 했습니다.

 

 

 

 

## 배열 초기화 결과 - Ex02_Array.java

- 역시 주소를 참조하는 것으로 나옵니다. 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

 

 

 

 

 

 

 

 

 

 

 

3) 배열값 할당하기

- 위에서는 처음부터 초기화시킨 겁니다.

- 하지만 추후에 배열 값을 주고 싶을 수도 있습니다.

- 그럴 때의 문법을 보도록 하겠습니다.

 

 

## 배열 값할당 문법

배열명[인덱스번호] = 값;

 

- 인덱스번호는 배열의 위치값을 말합니다.

- 이때 0번부터 시작한다는 것을 알아야 합니다.

- 배열을 {10,20,30,40,50} 이렇게 5개 선언했다고 보겠습니다.

인덱스번호 0 1 2 3 4
10 20 30 40 50

- 이런 식으로 인덱스번호를 할당받습니다.

 

 

 

## 배열 값할당 코드 - Ex03_Array.java

package ch18_array;

public class Ex03_Array {

	public static void main(String[] args) {
		int[] nums01 = new int[3];
		int[] nums02 = new int[10];
		
		//각각 할당
		nums01[0] = 10;
		nums01[1] = 20;
		nums01[2] = 30;
		
		//반복문 통해서 할당
		for(int i=0;i<nums02.length;i++) {
			nums02[i] = (i + 1) * 10;
		}
		
		System.out.println(nums01[0]);
		System.out.println(nums01[1]);
		System.out.println(nums01[2]);
		System.out.println(nums02[5]);
	}
}

- 첫 번째 nums01에는 각각 할당을 해봤습니다.

- 그리고 nums02는 10개라 너무 많아서 반복문을 통해 할당을 했습니다.

- 이때  num02.length 는 배열의 개수를 반환하는 속성입니다. 

- 10이라고 적어도 맞았겠지만, 배열의 개수가 달라질 수도 있으니 length속성을 사용해 주세요.

 

 

 

## 배열 값할당 결과 - Ex03_Array.java

- 마지막은 5지만 인덱스번호니까 6번째 위치에 있는 값을 가져왔기 때문에 60으로 반환이 됩니다. 

 

 

 


 

 

 

 

 

4) 여러 배열을 한 번에 선언하기

- 배열도 변수처럼 배열을 여러 개 한번에 선언할 수 있습니다.

- 이때 문법에 차이가 있기 때문에 정확히 알고 가야 합니다. 

 

## 여러 배열 한번에 선언하는 문법

//arr1: 배열, arr2: 배열 => 둘다 배열로 처리
int[] arr1, arr2;

//arr3: 배열, arr4: 변수 => 각각 처리됨
int arr3[], arr4;

- 헷갈리면 그냥 각각 선언하는 것이 좋습니다.

- 저는 그래서 자료형 뒤에 붙여 쓰는 것을 선호하긴 합니다. 

 

 

## 여러 배열 선언 코드 - Ex04_Array.java

package ch18_array;

public class Ex04_Array {

	public static void main(String[] args) {
		int[] arr1, arr2; 
		int arr3[], arr4;
		
		arr1 = new int[] {1,2,3};
		arr2 = new int[] {1,2,3};
		arr3 = new int[] {1,2,3};
		//arr4 = new int[] {1,2,3};
		arr4 = 10;
		
		System.out.println(arr1);
		System.out.println(arr2);
		System.out.println(arr3);
		System.out.println(arr4);
	}
}

- arr4는 변수이기 때문에 배열을 담으면 에러가 발생됩니다.

 

 

 

## 여러 배열 선언 결과 - Ex04_Array.java

- 위의 3개는 배열이라 주소를 참조하고, arr4는 변수라 10인 값(리터럴)을 반환하는 것을 확인할 수 있습니다.

 

 

 

 

- 그럼 아래 문제를 배열로 만들어 보세요.

배열에 알파벳 A~Z까지 26개를 담은 후 한개씩 출력하시오.
예시) 1: A
      ...
      26: Z

- 혼자 풀어 본 후 더보기 버튼을 눌러 주세요.

 

 

더보기

##  알파벳을 배열에 담기 코드 - Ex05_ArrayAlphabet.java

package ch18_array;

public class Ex05_ArrayAlphabet {

	public static void main(String[] args) {
		//26개를 담을 변수
		char[] alphabets = new char[26];
		
		//A~Z까지를 각각 담을 변수, 초기값은 A로 처리
		char ch = 'A';
		
		//26번 반복
		for(int i=0;i<alphabets.length;i++) {
			alphabets[i] = ch; //배열에 알파벳 담기
			System.out.println((i + 1) + " : " + alphabets[i]);
			ch++;
		}
	}
}

 

##  알파벳을 배열에 담기 결과 - Ex05_ArrayAlphabet.java

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형