배열선언, 생성, 초기화를 한번에 수행하는 문법
데이터타입[] 변수명 = {데이터1, 데이터2,...,데이터n};
=> 배열 생성 문법을 별도로 명시하지 않고 중괄호를 사용하여 초기화할 데이터를 리터럴 형태로 전달하면 해당 데이터 개수만큼 배열 공간이 자동으로 생성됨 => n개 만큼의 공간을 생성하면서 인덱스 번호가 0 ~ n-1까지 부여되고 자동으로 기본값으로 초기화됨
위의 문장들을 하나로 결합하여 리터럴로 즉시 초기화까지 수행
int[] arr = {1,2,3,4,5};
// 배열 arr의 모든 요소 출력
for(int i=0;i<arr.length;i++ ) {
System.out.print(arr[i] + " ");
}
=> 주의! 5개의 리터럴 저장 시 5개 데이터 저장 공간만 생성되므로 추가적인 데이터 저장은 불가능
int형 배열 arr2를 먼저 선언한 후 별도로 정수형 리터럴 1,2,3,4,5로 한꺼번에 초기화하는 경우
int[] arr2;
// arr2= {1,2,3,4,5}; //오류발생! 별도로 초기화 시 사용 불가능!
// => Array constants can only be used in initializers
// => new 키워드를 사용하는 방법과 결합하여 문법을 지정해야함
arr2 = new int[] {1,2,3,4,5};
=> 주의! 배열 크기는 지정하지 않는다.
String 타입 문자열 3개("JAVA", "JSP", "CLOUD")를 저장하는 배열 strArr 생성하고 리터럴로 즉시 초기화까지 수행 후 출력
String[] strArr= {"JAVA", "JSP", "CLOUD"};
for(int i=0;i<strArr.length;i++ ) {
System.out.print(strArr[i] + " ");
}
int[] a = {1,2,3};
int[] b = {4,5,6};
int[] c = {7,8,9};
a = b; // b의 주소값을 a에 저장
기존에 a가 가리키던(참조하던) 1,2,3 저장공간을 버리고, b가 가리키는 4,5,6 저장공간의 주소값을 전달받아 참조하게 됨 이때, 기존의 1,2,3 저장 공간은 더 이상 참조되지 않으므로 불필요한 메모리 공간이 되어 Garbage Collector에 의해 정리 대상이 됨 => 즉, 더 이상 필요없는 메모리 공간은 자동으로 정리됨
b = c; //c의 주소값을 b에 저장
기존에 b가 가리키던(참조하던) 4,5,6 저장공간을 버리고 c가 가리키는 7,8,9 저장공간의 주소값을 전달받아 참조하게 됨 이때, 기존의 4,5,6 저장 공간은 여전히 a에 의해서 참조되고 있으므로 Garbage Collector에 의한 정리 대상이 아니다!
예제. 배열의 최대,최소,합계,평균값을 구하는 코드
numbers={3,2,14,21,100,4,2,1};
int max; int min; int sum; int avg;
[출력 결과]
최대값 : 100
최소값 : 1
합계 :
평균 :
int[] numbers = {3,2,14,21,100,4,2,1};
//변수 선언 및 초기화
int max = numbers[0];
int min = numbers[0];
int sum =0;
double avg = 0.0;
for(int i=0; i<numbers.length; i++) {
//최대값
if(max < numbers[i] ) {
max = numbers[i];
}
//최소값
if(min > numbers[i]) {
min = numbers[i];
}
//합계
sum += numbers[i];
}
//평균
avg = (double)sum/numbers.length;
System.out.println("최대값 : " + max);
System.out.println("최소값 : " + min);
System.out.println("합계 : " + sum);
System.out.println("평균 : " + avg);
}
'JAVA' 카테고리의 다른 글
[JAVA] 배열을 활용하여 거스름돈을 동전으로 바꾸기 (0) | 2023.09.11 |
---|---|
[JAVA] 배열 내의 데이터에 대한 연산 누적 (0) | 2023.09.11 |
[JAVA] 배열(array) (0) | 2023.09.11 |
[JAVA] 생성자(constructor) (0) | 2023.09.11 |
[JAVA] 메서드 오버로딩을 사용하여 계산기 클래스 만들기 (0) | 2023.09.11 |