[개발] - 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
반응형