JAVA05강 배열(Array)/배열(array)

배열(array)의 활용

ByeongSuAhn 2021. 7. 17. 06:42

배열의 길이 변경하기

배열은 한번 선언하면 길이를 변경할 수 없다,

따라서 더 큰 길이의 배열을 생성한 뒤 기존의 배열에 저장된 값을 새로운 배열에 복사하면 된다.

배열의 길이를 변경하는 방법:
1. 더 큰 배열을 새로 생성한다.
2. 기존 배열의 내용을 새로운 배열에 복사한다.

새로 배열을 생성해야 하는 상황이 가능한 적게 발생하도록 해야 하며, 기존의 2배 정도의 길이로 생성하는 게 좋다.

 

배열의 초기화

배열은 생성과 동시에 자동적으로 자신의 타입에 해당하는 기본값으로 초기화되므로 배열을 사용하기 전에 따로 초기화를 해주지 않아도 되지만, 원하는 값을 저장하려면 각 요소마다 값을 지정해 줘야 한다.

 

배열의 출력

배열에 저장된 값을 값을 확인할 때도 for문을 사용하면 된다.

 

int[] iArr = { 100, 95, 80, 70, 60,};

// 배열의 요소를 순서대로 하나씩 출력
for(int i=0; i<iArr.length; i++) {
	System.out.print(iArr[i]+",");
}
System.out.println();

 

 

배열의 복사

배열은 한번 생성하면 길이를 변경할 수 없기 때문에 이전 배열로부터 내용을 복사해야 한다.

public class ArrayEx04 {
	public static void main(String[] args) {
		char[] abc = { 'A', 'B', 'C', 'D' };
		char[] num = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
		System.out.println(abc);
		System.out.println(num);
		
		// 배열 abc와 num을 붙여서 하나의 배열(result)로 만든다.
		char[] result = new char[abc.length+num.length];
		System.arraycopy(abc, 0, result, 0, abc.length);
		System.arraycopy(num, 0, result, abc.length, num.length);
		System.out.println(result);
		
		// 배열 abc를 배열 num의 첫 번째 위치부터 배열 abc의 길이만큼 복사
		System.arraycopy(abc,  0,  num,  0,  abc.length);
		System.out.println(num);
		
		// number의 인덱스6 위치에 3개를 보사
		System.arraycopy(abc, 0, num, 6, 3);
		System.out.println(num);
	}
}

 

배열의 활용

public class ArrayEx05 {
	public static void main(String[] args) {
		int sum = 0;
		float average = 0f;

		int[] score = { 100, 88, 100, 100, 90 };

		for (int i = 0; i < score.length; i++) {
			sum += score[i];
		}

		average = sum / (float) score.length;
		System.out.println("총점 : " + sum);
		System.out.println("평균 : " + average);
	}
}
배열에서 총점과 평균을 구하기
총점 : 478
평균 : 95.6

 

 

 

public class ArrayEx06 {
	public static void main(String[] args) {
		int[] score = { 79, 88, 91, 33, 100, 55, 95 };

		int max = score[0];
		int min = score[0];

		for (int i = 1; i < score.length; i++) {
			if (score[i] > max) {
				max = score[i];
			} else if (score[i] < min) {
				min = score[i];
			}
		} // end of for
		System.out.println("최대값 :" + max);
		System.out.println("최소값 :" + min);
	} // end of main
}// end of class
변수 두개를 만들어서 배열의 최댓값, 최솟값저장
최대값 :100
최소값 :33

 

 

임의의 값으로 배열 채우기

import java.util.*;

public class ArrayEx09 {
	public static void main(String[] args) {
		int[] code = {-4, -1, 3, 6, 11};
		int[] arr = new int[10];
		
		for(int i=0; i < arr.length ; i++) {
			int tmp = (int)(Math.random() * code.length);
			arr[i] = code[tmp];
		}
		
		System.out.println(Arrays.toString(arr));
	}
}
배열의 값을 임의로 초기화하는 코드
실행할 때 마다 값이 달라진다

 

[3, -4, 3, 6, -4, -4, 11, -1, -4, 11]

 

 

public class ArrayEx11 {
	public static void main(String[] args) {
		int[] numArr = new int[10];
		int[] counter = new int[10];
		
		for(int i=0; i < numArr.length ; i++) {
			numArr[i] = (int)(Math.random() * 10);
			System.out.print(numArr[i]);
		}
		System.out.println();
		
		for(int i=0; i < numArr.length ; i++) {
			counter[numArr[i]]++;
		}
		
		for (int i=0; i < numArr.length ; i++){
			System.out.println( i +"의 개수 :"+ counter[i]);
		}
	}
}
길이가 10인 배열을 만들고 임의의 값으로 초기한다.
8811991509
0의 개수 :1
1의 개수 :3
2의 개수 :0
3의 개수 :0
4의 개수 :0
5의 개수 :1
6의 개수 :0
7의 개수 :0
8의 개수 :2
9의 개수 :3