본문 바로가기

웹 개발/Java

[Web_JAVA] 09

● 배열

- 저장공간의 나열

 

 

 

● 배열 사용 목적

1. 변수를 여러 개 선언하면 이름도 여러 개 생기는데, 이 때 각 저장공간을 관리하기가 불편하다.

    따라서 n칸 배열을 한 번 선언하면 저장공간도 여러 개 생기고, 이름도 한 개이기 때문에 관리하기 편하다.

 

2. 규칙성이 없는 값에 규칙성을 부여하기 위해 사용한다.

 

 

 

● 배열의 선언

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

- 어떤 값을 넣을 지 알 때 사용한다.

 

2. 자료형[] 배열명 = new 자료형[칸수];

- 어떤 값을 넣을 지는 모르나, 몇 칸 만들 지는 알 때 사용한다.

 

3. 자료형[] 배열명 = null;

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

- 어떤 값을 넣을 지도 모르고, 몇 칸 만들 지도 모를 때 사용한다.

 

 

※ new

- Heap 메모리에 할당, 초기값으로 자동 초기화

 

※ null

- 주소의 초기값

 

 자바에서 배열은 항상 Heap(동적 메모리)에 할당되기 때문에 메모리 상, 동적 배열만 존재한다.

 

 

 

● 배열의 구조

(ex) int[] arData = {7, 9, 2, 1, 4};

- arData라는 이름의 저장공간은 한 개 만들어지며, 여기에는 한 개의 값만 담을 수 있다.

- 5개의 값을 담기 위해서는 5칸이 필요하며, 이는 Heap에 할당된다.

- 5칸의 저장공간 중 첫번째 저장공간의 주소값이 arData 저장공간으로 들어가며,다음 주소에 접근하기 위해서는
   + n을 한다.

  → 예를 들어, arData + 3은 1이라는 값이 담긴 저장소의 주소값이 되며, *(arData + 3)은 해당 주소에 가서 읽어온
      1이라는 값이 된다.

- JAVA에서는 직접 주소에 접근하는 연산자가 없기 때문에 위와 같은 식을 []로 치환하여 사용하며, arData[3]으로
  사용한다.

- 각각의 방 번호는 index라고 부르며, 배열은 시작 주소를 가지고 있기 때문에 인덱스 번호는 항상 0부터 시작된다.

 

 

※ length

- 배열을 선언하면 length라는 상수가 선언되고, 해당 배열의 길이가 담긴다.

- 배열명.length로 사용하게 된다.

 

 

 

● 배열의 사용

- int[] arData = new int[4];  // arData는 저장공간이다.

- arData[0] = 10;  // arData는 저장공간이다.

- arData[0] + 9;  // arData는 값이다.(10 + 9 = 19)

- System.out.println(arData);  // arData는 주소값이다.

- arData[2] = arData[0] + arData[1];  // 저장공간, 값, 값(arData[0] : 10, arData[1] : 0(초기값이 0이다), arData[2] : 10)

- System.out.println(arData[4]);  // 결과 : 오류 발생(인덱스 범위를 벗어났다.)

 

 


 

실습(배열(1))

1. '3, 5, 1, 9, 7'의 값을 가진 배열을 선언한 후 출력하기

public class ArTest {
	public static void main(String[] args) {

		int[] arData = {3, 5, 1, 9, 7};

		for (int i = 0; i < arData.length; i++) {  // arData.length : 5
			System.out.println(arData[i]);
		}		
		
	}
}

 

결과

 

 

 

 

2. 선언된 배열에 '5, 4, 3, 2, 1' 값을 넣고 출력하기

public class ArTest {
	public static void main(String[] args) {

		int[] arData = {3, 5, 1, 9, 7};

		for (int i = 0; i < arData.length; i++) {
			arData[i] = 5 - i;  // 5 - 0, 5 - 1, 5 - 2, ...
			System.out.println(arData[i]);
		}
		
	}
}

 

결과

 

 

 

 

실습(배열(2))

1. 1~10까지 배열에 담고 출력하기

import java.util.Scanner;

public class ArTask1 {
	public static void main(String[] args) {

		int[] arData = new int[10];  // arData의 크기는 10이다.

		for (int i = 0; i < arData.length; i++) {
			arData[i] = i + 1;
			System.out.println(arData[i]);			
		}
		
	}
}

 

결과
 

 

 

2. 10~1까지 중 짝수만 배열에 담고 출력하기

import java.util.Scanner;

public class ArTask1 {
	public static void main(String[] args) {

		int[] arData = new int[5];  // 출력하려는 숫자의 개수가 5개이므로 크기를 5로 선언한다.

		for (int i = 0; i < arData.length; i++) {
			arData[i] = (5 - i) * 2;  // (5 - 0) * 2, (5 - 1) * 2, (5 - 2) * 2, ...
			System.out.println(arData[i]);	
		}		

	}
}

 

결과

 

 

 

3. 1~100까지 배열에 담은 후 홀수만 출력하기

import java.util.Scanner;

public class ArTask1 {
	public static void main(String[] args) {

		int[] arData = new int[100];  // 배열에 담은 후 출력이므로 크기를 100으로 선언한다.

		for (int i = 0; i < arData.length; i++) {
			arData[i] = i + 1;  // arData[0] = 0 + 1

			if(arData[i] % 2 != 0) {  // arData[i]의 값이 홀수라면
				System.out.println(arData[i]);	
			}

		}
		
	}
}

 

결과

 

 

 

4. 1~100까지 배열에 담은 후 짝수의 합 출력하기

import java.util.Scanner;

public class ArTask1 {
	public static void main(String[] args) {

		int[] arData = new int[100];
		int total = 0;  // 짝수의 합을 담을 변수

		for (int i = 0; i < arData.length; i++) {
			arData[i] = i + 1;

			if(arData[i] % 2 == 0) {  // arData[i]의 값이 짝수라면
				total += arData[i];  // total = total + arData[i]
			}

		}

		System.out.println(total);			

	}
}

 

결과

 

 

5. A~F까지 배열에 담고 출력하기

import java.util.Scanner;

public class ArTask1 {
	public static void main(String[] args) {

		char[] arData = new char[6];  // A ~ F는 6개이다.

		for (int i = 0; i < arData.length; i++) {
			arData[i] = (char)(i + 65);  // 0 + 65, 1 + 65, ...
			System.out.println(arData[i]);
		}			
		
	}
}

 

결과
 

 

 

6. A~F까지 중 C를 제외하고 배열에 담은 후 출력하기

import java.util.Scanner;

public class ArTask1 {
	public static void main(String[] args) {

		char[] arData = new char[5];  // A ~ F 중 C를 제외한 후 출력하므로 크기를 5로 선언한다.
		int index = 0;

		for (int i = 0; i < arData.length; i++) {
        
			// for문에서는 i가 반복 횟수를 결정짓는다.
			// 만약 i를 직접 증가시키면 반복횟수가 줄어든다.
			// 따라서 i값을 index 변수에 담아놓고, index를 증가시킨다.
			index = i;

			if(i > 1) {
				index++;
			}

			arData[i] = (char)(index + 65);  // 0 + 65, 1 + 65, ...
			System.out.println(arData[i]);
		}
		
	}
}

 

결과

 

 

 

'웹 개발 > Java' 카테고리의 다른 글

[Web_JAVA] 11  (0) 2022.02.25
[Web_JAVA] 10  (0) 2022.02.24
[Web_JAVA] 08  (0) 2022.02.22
[Web_JAVA] 07  (0) 2022.02.21
[Web_JAVA] 06  (0) 2022.02.20