1. 배열이란?
배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 말한다. 배열 속 여러 개의 데이터의 묶음 중 각각의 데이터를 '요소'라고 부른다.
2. 배열의 선언과 생성
배열을 선언하는 건 단지 생성된 배열을 다루기 위한 참조변수를 위한 공간이 만들어질 뿐이다.
배열을 생성해야만 값을 저장할 수 있는 공간이 만들어지는 것이다.
배열을 생성하기 위해서는 연산자 'new'와 함께 배열의 타입과 길이를 지정해야 한다.
타입[ ] 변수이름; // 배열 선언 (배열을 다루기 위한 참조변수)
변수이름 = new 타입[길이]; // 배열 생성 (실제 저장공간 생성)
* 배열의 선언과 생성을 동시에 할 수 있다. 대부분의 경우 이렇게 한다.
타입[ ] 변수이름 = new 타입[길이]; // 배열의 선언과 생성을 동시에
길이가 4인 int 배열의 선언과 생성 (같이)
3. 배열의 인덱스
배열의 각 저장공간을 '배열의 요소'라고 하며 '배열이름[인덱스]'의 형식으로 배열의 요소에 접근한다.
인덱스(index)는 배열의 요소마다 붙여진 일련번호로 각 요소를 구별하는데 사용된다. 인덱스는 0부터 시작한다.
"인덱스(index)의 범위는 0 부터 '배열길이 -1' 까지"
예를들어 길이가 4인 배열은 모두 4개의 요소(저장공간)을 가지며 인덱스의 범위는 0부터 4까지, 즉 0, 1, 2, 3 이 된다.
int [ ] num = new int[4]
배열에 값을 저장하고 읽어오는 방법은 변수와 같다. 다만 변수이름 대신 '배열이름[인덱스]'의 형식을 사용한다.
num[3] = 50; → 배열 num의 4번째 요소에 50을 저장한다.
int i = num[3]; → 배열 num의 4번째 요소의 값을 i에 저장한다.
4. 배열의 길이 (배열이름.length)
자바는 JVM이 모든 배열의 길이를 별도로 관리하며, 배열이름.length 로 배열의 길이에 대한 정보를 얻을 수 있다.
배열은 한번 생성하면 길이를 변경할 수 없기 때문에 배열이름.length는 상수이다. 즉 값을 읽을 수만 있고 변경할 수 없다.
▶ 배열의 각 요소를 for문을 이용하여 출력
위 코드에서 배열 num의 길이는 4이고 인덱스의 범위는 0 ~ 3 이다.
배열의 길이와 for문의 조건식의 범위가 같아야한다. 다를 경우 Error
배열 num의 길이가 변경되면 for문의 조건식도 변경을 해 주어야 한다. 하지만 이를 간소화 하기 위해 for문의 조건식을 'i < num.length' 로 변경하여 배열 num의 길이가 변경되면 자동적으로 for문의 조건도 변경되게 설정한다.
5. 배열의 초기화
배열은 생성과 동시에 자동적으로 기본값(0)으로 초기화되기 때문에 배열을 사용하기 전에 따로 초기화를 해주지 않아도 되지만 원하는 값을 저장하려면 각 요소마다 값을 지정해 주어야 한다.
▶ for문을 이용한 배열 초기화 (저장하는 값에 일정한 규칙이 있어야 한다)
위와 같이 저장하려는 값에 일정한 규칙이 있다면 for문을 이용하여 간단히 초기화 할 수 있다.
▶ 배열의 생성과 초기화를 동시에
저장할 값들을 괄호{ } 안에 쉼표로 구분해서 나열하면 되며, 괄호 { } 안의 값에 개수에 의해 배열의 길이가 자동으로 결정되기 때문에 괄호 [ ] 안에 배열의 길이는 안적어도 된다.
또, 'new 타입[ ]' 을 생략할 수도 있다. → 하지만 배열의 선언과 생성을 따로하는 경우에는 생략할 수 없다.
6. 배열의 출력
▶ for문을 활용하여 출력
배열을 초기화할 때 for문을 사용하듯 배열에 저장된 값을 확인할 때도 for문을 사용한다.
배열 이름만 쓰면 배열의 시작 주소가 출력되기 때문에 '배열이름[인덱스]' 형태로 출력해야 한다 → score.length
자바에서 만약 배열의 이름 자체(score)로 출력하게되면 '타입@주소'의 형식으로 출력된다.
▶ Arrays.toString(배열이름) 메서드를 사용하여 출력
Arrays.toString( )는 배열의 모든 요소를 '[첫번째 요소, 두번째 요소, ...]' 의 형식으로 문자열로 만들어 출력한다.
+ 예외적으로 char 배열은 println 메서드로 출력하면 각 요소가 구분자 없이 그대로 출력된다.
'Programming > Java' 카테고리의 다른 글
[Java] 조건문/반복문을 이용해 배수가 아닌 수 찾기 (0) | 2020.11.10 |
---|---|
[Java] 배열(Array) - String 배열, String 클래스, String 메서드, 2차원 배열 (1) | 2020.04.23 |
[Java] 배열의 활용 (총합과 평균, 최대값과 최소값, 섞기) (0) | 2020.04.18 |
[Java] for문(반복문)을 이용해 별찍기 (1) | 2020.04.16 |
[Java] 반복문으로 중첩 덧셈하기 (for문 활용) (0) | 2020.04.16 |