코드 그라데이션

Day08. 배열과 가비지 컬랙션, 배열의 최댓값 구하기 본문

Java/Mega

Day08. 배열과 가비지 컬랙션, 배열의 최댓값 구하기

완벽한 장면 2023. 3. 23. 03:19

이런 경우는 어떻게 될까?

int[ ] a = new int[10];

a = new int[20];

=> 배열이 선언되어서, 이미 할당되었는데, a 변수에 새로운 크기의 배열이 저장되었다.

이 때 [10] 짜리 배열의 운명은 어떻게 될까...

 

정답은

배열은 가비지 컬랙션이 있어서 

이미 실행이 끝나고 떠도는 것을 알아서 정리해준다!

(면접 질문으로 나올 수 있음)

 

 

 

지금 보면 10 짜리 배열에 불이 안 들어와 있는 걸 볼 수 있음.

 

그리고 이걸 출력하면, 위 반복문에 의거해서

1
2
3
4
5
6
7
8
9
10
0
0
0
0
0
0
0
0
0
0

이렇게 나온다!!

 

간단한 퀴즈

배열 + Random 결합한 문제

 

풀이 순서

1. 랜덤 값 받기

2. 최댓값 찾기

3. 출력

 

package Day08;

import java.util.Random;

public class Q1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//1. 랜던값 받기
		//2. 최대값 찾기
		//3. 출력
		Random r = new Random();
		int[] array = new int[10];
		int max = 0; // 일단 최댓값 초기화
		
		for(int i = 0;i<array.length;i++) {
			array[i] = r.nextInt(11); // 2  5  6  3  7  7  1  0   4    3 
			if(max < array[i]) {
				max = array[i];  // max = 2  5   6   7
			}
		}
        // 옆에 적어놓은 숫자가 무엇이냐면, 
        // 난수로 로 추출되어 배열에 들어간 숫자와 최댓값에 저장되어 있는 숫자를 시행마다 비교하여
        // 배열에 들어간 숫자가 크면, 이 숫자를 max에 업데이트 시켜주는 것.
        // 지금은 추출된 난수 중에서 7이 젤 큰 숫자니까, 모두 실행했을 때 7이 max에 남게 되겠지.
		
		for(int i = 0;i<array.length;i++) {
			System.out.println("index["+ i +"] : " +array[i]);
		}
		
		System.out.print("최대 값 : ");
		for(int i = 0;i<array.length;i++) {
			if(array[i] == max) {
				System.out.print("["+i + "] ");
			}
		}
	}
}

 

728x90
Comments