배열을 정의 하는 방법은 여러가지가 있다.
int[] score = {90, 91, 92, 93, 94, 95, 96, 97, 98, 99};
자료형[] 변수명 = {변수값}을 해주면된다.
int[] score2 = new int[3];
score2[0] = 10;
score2[1] = 20;
score2[2] = 30;
for (int i = 0; i < score2.length; i++) {
System.out.println(score2[i]);
int[] 배열변수이름 = new int[배열의 크기]; 를 해주면 된다.
int타입의 인스턴스를 만드는 것으로 인스턴스는 힙영역에 저장되기 때문에 인스턴스로 만든 배열도 힙 영역에 저장된다.(함수가 끝나면 사라진다.)
int[] score3;
score3 = new int[]{80, 90, 100};
배열에 배열이 들어가있는 형태
int[][] score4 = {{1,2,3}, {11, 12, 13}, {21, 22, 23}};
다음과 같이 나타낼 수 있다.
출력은 어떻게 해야할까? 배열이 두개이므로 for문을 2번 사용해야한다.
for (int i = 0; i < score4.length; i++) {
for (int j = 0; j < score4[i].length; j++) {
System.out.print(score4[i][j] + " ");
}
System.out.println();
}// 별찍기와 같은 원리
이차원 배열을 출력할때는 모든 열과 행을 다 찍어야하기에 score4 [i][j]를 해주어야한다.

별찍기와 같은 원리인 것이다. 행과 열이 있는 2차원 배열이 되는 것이어서 2차원 배열이라고 한다.
배열 정의
int[][] score5 = new int[3][3];
타입[][] 변수명 = new 타입[바깥 배열 길이][안 배열 길이]이렇게 정의를 해주면 된다. 1차원 배열에서 []만 하나씩 더 추가 된 것이다.
배열에 숫자 넣기
for (int i = 0; i < score5.length; i++) {
for (int j = 0; j < score5[i].length; j++) {
score5[i][j] = 10*i + 1*(j+1);
}
}
첫 번째 방법에서는 우리가 직접 손으로 값을 넣어주었지만 이번 방법에서는 그럴 수가 없으니 반복문으로 값을 넣어주어야한다.
출력과 같은 for문을 짜고 "배열[i][j]"에 원하는 값을 식으로 만들어 넣어주면된다.
결과

출력하면 다음과 같은 결과가 나온다.
0.1, 0.2, 0.3을 배열에 넣는 문제였다.
double[] arr = new double[3];
for (int i = 0; i < arr.length; i++) {
arr[i] = 0.1 * (i+1);
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
배열에 0.1 * (i+1)을 해주고 계속 넣어주었다. 그런데 결과가 좀 이상했다.

0.3뒤에 긴 숫자가 붙었는데 물어보니 현재 코딩은 실수에 숫자를 많이 담기위해 부동소수점법을 이용하는데, 이 때 오차가 발생할 수 있어서 다음과 같은 현상이 일어난다고 한다.
이를 해결하기 위해서는 함수를 사용해서 소수점 절삭을 해야한다.
int[] score6 = {90, 91, 92, 93, 94};
int sum1 = 0;
// for (int i = 0; i < score6.length; i++) {
// sum1 += score6[i];
// }
// double avg1 = (double) sum1/5;
// System.out.println(avg1);
for (int i : score6) {
sum1 += i;
}
double avg1 = (double) sum1/5;
System.out.println(avg1);
배열의 값을 변수에 담고 변수를 자동으로 0부터 길이만큼 증가시킨다. 그래서 원래 실행문에 score6[i]라고 배열의 값을 표현했지만, 여기서는 그냥 변수로 그걸 대신한다.
하지만 이것의 단점은 무조건 처음부터 배열의 끝까지 반복한다는 것이다. 그래서 배열을 출력하는데 사용하는데에만 사용하기 좋은거 같다.