본문 바로가기

ETC/복습

[복습_JAVA] 14

● 배열의 선언

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부터 시작된다.

 

 

 

● 배열의 사용

- 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. 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]);	
			}

		}
		
	}
}

 

결과

 

 

 

3. 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);			

	}
}

 

결과

 

 

 

 

 

 

'ETC > 복습' 카테고리의 다른 글

[복습_JAVA] 16  (0) 2022.08.25
[복습_JAVA] 15  (0) 2022.08.22
[복습_JAVA] 13  (0) 2022.08.20
[복습_JAVA] 12  (0) 2022.08.17
[복습_JAVA] 11  (0) 2022.08.16