3.31 배열

* 대전제*
자바의 배열(객체)은, 한번 생성하면
(1) 크기(길이) 와 (2) 원소의 타입을 변경할 수가 없다!!!!
배열의 장점
-중복된 변수 선언 줄이기 위해 사용
-반복문 이용해 요소들을 쉽게 처리
*배열 선언
- 배열을 사용하기 위해 우선 배열 변수 선언
--> 데이터타입[] 변수
- 배열 변수는 참조 변수
--> 배열 생선되기 전 null로 초기화 가능
--> 배열 변수가 null 값을 가진 상태에서 항목에 접근 불가
*값 목록으로 배열 생성하는 방법
*new 연산자로 배열 생성
- 배열 생성시 값 목록을 가지고 있지 않음
- 향후 값들을 저장할 배열을 미리 생성하고 싶을 경우
*배열의 길이
- 배열에 저장할 수 있는 전체 항목 수
--> 배열변수.length
int[] intArray = {10, 20, 30};
int num = intArray.length;
- 배열의 길이는 읽기 전용
- 배열의 길이는 for문의 조건식에서 주로 사용
*다차원 배열
- 2차원 배열 이상의 배열
- 자바는 1차원 배열을 이용해 2차원 배열 구현
🥑예제
int타입 배열 변수의 모든 원소를 출력하는 3가지 방법을 알아보자.
먼저, 메인 메소드를 선언하고
int[] intArray = {1, 2, 3, 4, 5, 6, 7}; --> int타입 배열변수를 초기화한다.
1. for문을 이용
2. 향상된 for문을 이용
for문에 초기화식/조건식/증감식이 아닌,
배열의 원소를 뜻하는 element 와 변수명 을 이용한다.
--> for( int element : intArray )
여기서 주의할 점은, 출력문에 intArray가 아닌 element를 넣어야 한다.
3. Arrays.toString(변수) 이용
--> 대괄호까지 예쁘게 만들어진다.
🥑예제
for문을 이용해 배열 원소들의 합을 구해보자.
(참고)
(점수가) 83, 90, 87의 정수 목록을 가지는 배열변수를 선언하고 초기화 할 때,
정석은 int[] scores = new int[] {83, 90, 87}; 이다.
이걸 줄여서 int[] scores = {83, 90, 87}; 로 쓸 수 있다.
하지만, 선언과 초기화를 따로 할 때는 초기화문에 new int[]를 붙이지 않으면 오류가 발생한다.
add 메소드
매개값으로 배열을 받아서,
배열의 항목을 다 더한 후에, 그 값을 리턴하는 메소드.
먼저, main메소드 바깥에서
add의 매개변수로 (int[] scores); 이라는 배열변수를 선언.
for문을 작성하고 sum의 값을 return한다.
이 때, 매개변수 scores에 배열객체를 대입해주기 위해
main메소드 안으로 들어와 배열객체를 생성한다.
--> int sum2 = add( new int[] {83, 90, 87} );
생성된 배열객체들은 scores에 대입되어 sum의 값이 나오게 된다.
여기서 나온 sum의 값은 main메소드의 sum2에 저장된다.
🥑예제
값 목록 없이 배열을 먼저 생성한 후, 배열의 원소 값을 변경해보자.
🥑예제
2차원 배열 생성과 값 출력하기