❯ 배열
하나의 변수에는 하나의 값만 할당할 수 있으므로 많은 값을 저장해야할 경우 수많은 변수를 선언해야함
이 때, 각 값들이 같은 타입을 가지는 경우 배열을 사용해 단 하나의 변수로 값을 저장하고 참조할 수 있음
- 배열: 동일한 타입의 값들을 하나의 묶음으로 묶은 자료 구조를 의미. 메모리 공간상에 묶여서 저장됨
- 요소(element): 배열이 가진 각 값을 의미
- 인덱스(index): 배열의 각 요소가 부여받는 순번(String과 유사)
- 배열의 차원: 배열이 중첩된 정도를 의미함. 배열의 요소가 또 다른 배열인 경우를 의미.
보통 2차원까지 사용함 (다차원 배열도 경우에 따라 사용하는 경우는 있음)
❯ 1차원 배열
가장 일반적인 형태로, 배열의 요소가 배열이 아닌 경우를 의미함
1차원 배열의 선언과 초기화
double[] tempJuly; // 배열을 가리킬 참조변수 tempJuly 선언.
tempJuly = new double[31]; // 총 31개의 double형 값을 저장할 수 있는 배열 생성.
//모든 요소는 double형의 기본값으로 초기화
변수를 선언한다는 것은 값을 저장할 메모리 공간을 확보하고 해당 메모리 공간에 이름을 붙이는것.
배열의 경우 배열을 선언하는 시점에 배열이 몇개의 요소를 가질지 컴퓨터는 알 수 없으므로
배열의 주소값을 담을 메모리공간만이 확보되고, 이후 배열이 생성되면 해당 배열의 첫 요소 주소값이 참조변수에 할당됨
double[] tempJuly = new double[31]; // 선언과 초기화는 하나의 문장으로도 작성 가능
double[] tempJuly = new double[] {13, 2, 5, ... , 31};
double[] tempJuly = {13, 2, 5, ... , 31}; //선언과 초기화 한번에 할 때에는 new double[]생략 가능
값 접근하기
배열의 특정 요소에 할당된 값에 접근하려면 배열 참조변수의 이름과 배열의 인덱스를 활용하면 됨
위의 tempJuly를 예로 들면, tempJuly[2]는 5를 의미함
배열의 길이
배열이 가진 요소의 개수를 배열의 길이 혹은 크기라고 함.
배열이름.length를 통해 얻을 수 있음. 만약 배열 길이가 31이라면 마지막 요소의 인덱스는 30임.(인덱스는 0부터 시작)
배열에서는 Arrays 클래스의 메서드를 사용할 수 있음
❯ 2차원 배열
배열의 각 요소가 또 다른 배열 구조를 갖는 경우를 말함
2차원 배열의 선언과 초기화
int[][] kcal; //배열 안에 배열을 갖는 2차 배열을 선언
kcal = new int[31][3]; //1차배열(외부배열)은 내부배열 31개를 요소로 가지며, 2차배열(내부배열)은 3개의 요소를 가짐
❯ 가변배열
2차원 이상의 배열에서는 비교적 자유로운 형태로 배열을 만들 수 있음
2차원 이상일 때 마지막 차수에 해당하는 배열의 길이를 고정하지 않아도 됨
int[][] ages = new int[5][]; //외부 배열만 생성된 상태, 외부배열 5개로 설정
ages[0] = new int[5] //age 배열의 인덱스0번의 요소에 5의 크기를 가진 배열을 할당
ages[1] = new int[6] //age 배열의 인덱스1번의 요소에 6의 크기를 가진 배열을 할당
ages[2] = new int[7] //age 배열의 인덱스2번의 요소에 7의 크기를 가진 배열을 할당
❯ 배열 탐색
인덱스와 배열의 크기를 활용해 배열을 탐색한다는 점이 문자열과 유사함.
반복문과 배열의 인덱스를 사용해 활용 가능함
for문, while문을 통해 요소 값을 변경할수도 있으나 향상된 for 문을 사용할 경우 배열 요소 값은 수정 불가함
드디어 기초 마지막 과정이 끝이 났다. 마지막으로는 계산기 만들기 과제를 진행했다.
코드를 작성하다보니 추가하고싶은 기능들이 자꾸 생각났는데 그걸 실제 코드로 구현해보려고하니
진행 과정에서 에러가 발생하는 경우도 있고, 반복문이 무한 순회하는 오류가 생기기도 했다.
이론으로 배우는것도 중요하지만 계속해서 새로운 기능을 연습해보는게 중요한것같다.
그래도 기능이 하나하나 추가될때마다 나오는 결과물이 귀여워서ㅎㅎ 더 해보게되는것같다. 시간 날때마다 조금씩 더 연습해봐야겠다.
'부트캠프 개발일기 > Java' 카테고리의 다른 글
10일차: 객체지향 프로그래밍 기초(생성자, 내부클래스) (0) | 2023.02.24 |
---|---|
9일차: 객체지향 프로그래밍 기초(Class, Field, Method) (0) | 2023.02.23 |
7일차: Java 기초(반복문/for, while, do-while) (0) | 2023.02.21 |
6일차: Java 기초(연산자, 콘솔I/O, 조건문/if, switch) (0) | 2023.02.20 |
5일차: Java 기초(변수, 타입, 문자열) (0) | 2023.02.17 |