배열이 왜 필요할까?
int student1 = 90;
int student2 = 92;
int student3 = 93;
int student4 = 89;
int student5 = 82;
System.out.println("student1의 점수 : " + student1);
System.out.println("student2의 점수 : " + student2);
System.out.println("student3의 점수 : " + student3);
System.out.println("student4의 점수 : " + student4);
System.out.println("student5의 점수 : " + student5);
학생을 몇 명 더 추가한다면 변수를 더 추가해야하고 코드가 상당히 많이 늘어난다.
반복문으로 할 수 있을 것 같은데..?
→ 변수 이름을 어떻게 할껀데..? 해결할 수 없어 ..
배열 생성
int students = new int[5]; // 1. 배열 생성
배열을 사용하려면 배열을 생성해야 한다. new int[5] 라고 입력하면 오른쪽 그림과 같이 총 5개의 int 형 변수가 만들어진다,
new는 새로 생성한다는 뜻이고, int[5]는 int 형 변수 5개라는 뜻이다. 따라서 int 형 변수 5개를 다룰 수 있는 배열을 새로 만든다는 뜻이다.
앞서 int student1, int student2 ... int student5 까지 총 5개의 변수를 직접 선언했다. 배열을 사용하면 이런 과 정을 한번에 깔끔하게 처리할 수 있다.
배열과 초기화
- new int[5] 라고 하면 총 5개의 int 형 변수가 만들어진다.
- 자바는 배열을 생성할 때 그 내부값을 자동으로 초기화한다.
- 숫자는 0 로 초기화 된다.
- boolean은 false 로 초기화 된다.
- String은 null 로 초기화 된다.
배열의 참조값
int students = new int[5]; // 1. 배열 생성
int students = x001; // 2. new int[5]의 결과로 x001 참조값 반환
studnets = x001; // 3. 최종 결과
이런 참조값은 생성한 배열을 참조 할 수 있는 메모리 주소를 나타내는 값임
배열은 왜 참조형을 사용 할까?
-> 지금 까지 배운 변수 처럼 단순히 그안에 값을 넣고 사용하면 안되나..?
기본형은 모두 사이즈가 명확하게 정해져있다. 즉, 기본형은 선언과 동시에 크기가 정해진다. 따라서 크기를 동적으로 바꾸거나 할 수는 없다. 또한, 기본형은 사용할 값을 직접 저장해 비교적 더 빠르고 메모리를 효율적으로 처리한다.
int i ; // 4 byte
long l ; // 8 byte
double d; // 8 byte
배열은 참조형을 사용함으로써, 크기를 동적으로 할당할 수 있다. 즉, 크기의 유연성을 제공할 수 있다.또한, 참조형은 메모리에 저장된 배열이나 객체의 참조를 저장해 더 복잡한 데이터 구조를 만들고 관리할 수 있다.
int size = 100; // 사용자가 입력한 값을 넣었다고 가정해보자.
new int[size]; // 이코드가 실행되는 시점에 배열의 크기가 정해짐
배열의 생성, 선언 ,초기화
선언과 생성
int[] students; // 배열 변수 선언
students = new int[5]; // int 가 5개 넣을 수 있는 그릇을 만든 것!
int[] students = new int[5]; // int 가 5개 넣을 수 있는 그릇 선언 + 생성
선언과 생성 그리고 초기화
int[] students = new int[]{90, 80, 70, 60, 50}; // 배열의 선언 + 생성 + 초기화
int[] students = {90, 80, 70, 60, 50}; // 배열의 선언 + 생성 + 초기화 이것도 되긴함 자바가 알아서 추론해줌
int[] students; // 배열 변수 선언
students = new int[5]; // int 가 5개 넣을 수 있는 그릇을 만든 것!
위의 코드는 똑똑한 자바가 알아서 추론해준다 .
int[] students ;
students = {90, 80, 70, 60, 50};
하지만 [오류] 이 코드는 자바가 추론하지 못한다.