- int a1 = 1, int a2 = 2, int a3 = 3.... int a15 = 15;
- 순차적인 순번을 가지고 있는 변수들의 집합. 같은 자료형의 변수와 값만 가질 수 있다.
- 배열의 선언 : 자료형[] 배열이름 = new 자료형[배열의 길이]; ex) int[] numArr = new int[15]; (인덱스 : 0 ~ 14)
- 배열 값의 사용 : 배열이름[꺼내올 값의 인덱스(순번)] ex) System.out.println(numArr[0]);
- 배열 사용 시 주의할 점 인덱스(순번)은 0부터 진행된다.
- 배열의 초기화 방법
- 각각의 인덱스에 접근하여ㅐ 직접 입력하는 방식
ex) numArr[5] = 15;
numArr[9] = 10; - 반복문을 이용하여 초기화 하는 방식
ex) for(int i = 0; i < 15; i++)
{
numArr[i] = 2*i; // 2의 배수
} - 선언과 동시에 초기화하는 방식
ex) //길이가 3인 배열이 만들어지며 동시에 값은 1,2,3으로 초기화된다. int[] arr = {1, 2, 3};
- 각각의 인덱스에 접근하여ㅐ 직접 입력하는 방식
- 배열의 길이를 확인하는 length : java에서 제공하는 Array 클래스 안에 존재하는 변수로 선언한 배열의 길이를 확인할 수 있다. ex) int[] arr = new int[50]; // 배열의 길이인 50을 출력함 System.out.println(arr.length);
-
객체 배열의 선언 : 크래스명[] 배열이름 = new 클래스명 [배열의 길이];
-
객체 배열의 사용도 일반 배열의 사용과 동일하게 인덱스로 접근하여 사용한다. ex) Course[] courseArr = new Course[3]; //인스턴스화 되어 객체를 넣어주지 않았기 때문에 0~2 인자에는 null값이 들어간다.
-
객체 배열은 초기화를 할 때 생성자를 통한 인스턴스를 만들어서 입력해줘야 된다.
ex) courseArr[0] = new Course();
courseArr[1] = new Course();for(int i =0; i < courseArr.length; i++) { courseArr[i] = new Course(); } -
인스턴스화된 객체를 넣어주지 않으면 null값이 출력된다.
- 사용법 :
int[] intArr = new int[50];
//int num은 intArr의 값을 하나씩 꺼내서 담아줄 변수(인덱스 순서대로 진행됨) int sum = 0; //intArr.length만큼 반복 for(int num : intArr) {
//num에 담긴 값 사용하는 소스코드 sum += num; } - 향상된 for문은 배열의 인자를 하나씩 꺼내서 사용하는 방식. 인덱스 순서대로 하나씩 꺼내서 사용하는 방식. 하나씩 꺼낸 값을 담아줄 변수의 타입과 배열의 타입이 일치해야 한다.
- 배열도 참조형 변수로 heap 메모리에 배열의 저장된다.
-
- 깊은 복사는 heap 메모리에 생성된 배열을 복사하여 heap 메모리 영역에 새로 하나 만드는 작업
- 깊은 복사는 clone()메서드나 System.arraycopy() 메서드를 이용해서 진행.
-
- 얕은 복사는 배열을 새로 생성하지 않고 생성된 배열의 주소값을 복사하므로써 같은 배열을 공유해서 사용
-
- java에서 지원하는 Math 클래스를 이용하여 Math.radom() 메서드로 난수를 발생시킬 수 있다.
- 0 <= Math.random() < 1 실수인 0.12544.... 임의 값이 발생됨