충분히 쌓여가는
5.6 배열(Array) 타입 본문
배열 변수 선언
타입[] 변수; //더 많이 사용
타입 변수[];
배열의 변수는 참조 변수
배열도 객체이므로 힙 영역에 생성되고 배열 변수는 힙 영역의 배열 주소를 저장한다
참조할 배열이 없다면 배열 변수도 null로 초기화할 수 있다
만약 배열 변수가 null 값을 가진 상태에서 변수[인덱스]로 값을 읽거나 저장하게 되면 NullPointerException이 발생한다
타입[] 변수 = null;
값 목록으로 배열 생성
타입[] 변수 = { 값0, 값1, 값2, 값3, ... };
중괄호 {}는 나열된 값들을 항목으로 가지는 배열을 힙에 생성하고, 번지를 return 한다
배열 변수는 return된 번지를 저장함으로써 참조가 이루어진다
예제
package ch05.sec06;
public class ArrayCreateByValueListExample1 {
public static void main(String[] args) {
//배열 변수 선언과 배열 생성
String[] season = { "Spring", "Summer", "Fail", "Winter" };
//배열의 항목값 읽기
System.out.println("season[0]: " + season[0]);
System.out.println("season[1]: " + season[1]);
System.out.println("season[2]: " + season[2]);
System.out.println("season[3]: " + season[3]);
//인덱스 1번 항목의 값 변경
season[1] = "여름";
System.out.println("season[1]: " + season[1]);
System.out.println();
//배열 변수 선언과 배열 생성
int[] scores = { 83, 90, 87 };
//총합과 평균
int sum = 0;
for(int i=0; i<scores.length; i++) {
sum += scores[i];
}
System.out.println("총합: " + sum);
double avg = (double) sum/3;
System.out.println("평균: " + avg);
}
}
season[0]: Spring
season[1]: Summer
season[2]: Fail
season[3]: Winter
season[1]: 여름
총합: 260
평균: 86.66666666666667
중괄호 {}로 감싼 값의 목록을 배열 변수에 대입할 때, 배열 변수를 미리 선언한 후에는 값 목록을 변수에 대입할 수 없다
타입[] 변수;
변수 = { 값0, 값1, 값2, 값3, ... }; //컴파일 에러
배열 변수를 선언한 시점과 값 목록이 대입되는 시점이 다르다면
new 타입[]을 중괄호 앞에 붙여주면 된다
타입[] 변수;
변수 = new 타입[] { 값0, 값1, 값2, 값3, ... };
String[] names = null;
names = new String { "A", "B", "C" };
메소드의 매개변수가 배열 타입일 경우에도 new를 사용하면 된다
printItem() 메소드를 호출할 때 매개값으로 중괄호를 감싼 값 목록을 주면 에러가 발생
//메소드 선언
void printItem(int[] scores) { ... }
//잘못된 메소드 호출
printItem( {95, 85, 90} ); //컴파일 에러
매개변수가 이미 선언되어 있고, 호출 시 값 목록을 제공하므로 다음에 같이 호출해야 함
//메소드 선언
void printItem(int[] scores) { ... }
//올바른 메소드 호출
printItem(new int[] {95, 85, 90} );
예제
package ch05.sec06;
public class ArrayCreateByValueListExample {
public static void main(String[] args) {
//배열 변수 선언
int[] scores;
//배열 변수에 배열을 대입
scores = new int[] {83, 90, 87};
//배열 항목의 총합
int sum = 0;
for(int i=0; i<scores.length; i++) {
sum += scores[i];
}
System.out.println("총합: " + sum);
//배열을 매개값으로 주고, printItem() 메소드 호출
printItem(new int[] {83, 90, 87, 90});
}
//printItem() 메소드 선언
public static void printItem(int[] scores) {
for(int i=0; i<scores.length; i++) {
System.out.println("scores[" + i + "]: " + scores[i]);
}
}
}
총합: 260
scores[0]: 83
scores[1]: 90
scores[2]: 87
scores[3]: 90
'이것이 자바다 > 05 참조 타입' 카테고리의 다른 글
5.6 배열(Array) 타입 - 배열 길이 length (0) | 2024.03.31 |
---|---|
5.6 배열(Array) 타입 - new 초기화할 경우 기본 값 (0) | 2024.03.31 |
5.4 null과 NullPointerException - 문자열 분리 split() (0) | 2024.03.31 |
5.4 null과 NullPointerException - 문자열 찾기 contains() (0) | 2024.03.31 |
5.4 null과 NullPointerException - 문자열 찾기 indexOf() (0) | 2024.03.31 |