> For the complete documentation index, see [llms.txt](https://heunnajo.gitbook.io/java/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://heunnajo.gitbook.io/java/ch5/array.md).

# Array

* 배열의 선언과 생성

| 선언 방법         | 선언 예                                         |
| ------------- | -------------------------------------------- |
| 타입\[ ] 변수이름;  | <p>int\[ ] score;</p><p>String\[ ] name;</p> |
| 타입 변수이름 \[ ]; | <p>int score\[ ];</p><p>String name\[ ];</p> |

```java
int[] score;//배열 선언
score = new int[5];//int형 값 5개를 저장할 수 있는 배열 생성

//배열의 선언과 생성을 한 번에!
int[] score = new int[5];
```

* array.length : 배열의 길이(int형 상수)

배열은 한번 생성하면 그 길이를 바꿀 수 없다.

1. 왜? 배열은 메모리에 연속적으로 값을 저장하기 때문에 배열을 한 번 선언하고 생성하고 나서 크기를 변경하게 되면 연속한 메모리 위치를 다시 찾아야하기 때문에 배열의 크기는 수정할 수 없다.
2. 배열을 쓰다가 부족해지면? 새로운 더 큰 배열을 생성하여 기존의 배열을 복사한다.

* 배열의 초기화

```java
int[] score = {50, 60, 70, 80, 90};//new int[] 생략가능!

int[] score;
score = {50,60,70,80,90};//에러! new int[] 생략할 수 없다!
score = new int[] {50,60,70,80,90};//OK!
```

* 배열의 출력

```java
int[] iArr = {100,95,80,70,60};
char[] chArr = {'a','b','c','d'};
System.out.println(chArr);//abcd출력된다.
System.out.println(iArr);//X [I@14318bb 와 같은 형식의 문자열 출력.
```

```java
for(int i=0; iArr.length; i++) {
    System.out.println(iArr[i]);
}
```

배열의 요소를 출력할 때, Arrays.toString() 이 많이 쓰인다. Arrays라는 클래스는 배열에 쓰이는 메소드들을 제공하는데 여기서는 toString()이라는 메소드로 배열의 요소들을 문자열로 반환해준다. Arrays를 사용하기 위해서는 import문을 추가해줘야한다! 추가해주지 않으면 Arrays에 빨간 줄이 생기는데, ctrl+shift+o 를 누르면 import 문이 추가된다!

```java
import java.util.Arrays;//ctrl+shift+o
...
System.out.prinln(Arrays.toString(iArr));
```
