배열(Array) 이란?
같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 ‘배열(array)’이라고 한다.
동일한 데이터를 연속적으로 만드는 방법이 배열이며, 배열을 사용하면 많은 양의 데이터를 손 쉽게 다룰 수 있고, 배열 안에 같이 담기는 데이터들은 같은 타입이어야 한다. 배열도 Object와 마찬가지로 여러개의 기억공간으로 이루어져있는 구조이기 때문에, 배열도 객체로 여겨진다.
저장할 데이터의 수가 많아지면, 개별로 변수가 만들어지는 것 자체가 비 효율적이고, 데이터 처리가 복잡해진다.
→ 배열로 만들어진 데이터는 데이터들끼리 인접해있기때문에, index(색인)을 지정해줄 수 있어, 반복문을 통해 데이터 처리가 용이해진다.
배열의 메모리주소
배열은 배열의 첫번째 항목인 배열[0]의 시작 주소가 배열 전체의 시작 주소와 동일하다.
배열의 몇번째 항목을 출력할 지 정하지 않고 그냥 배열의 이름만 넣어서 출력하면 메모리 주소를 확인할 수 있는데,
이것이 배열이 가리키는 첫번째 항목의 주소이다.
만약 int a[] = {10,20,30}과 int b[] = {10,20,30}으로 같은 내용의 값을 가지고 있지만 저장되는 메모리 주소는 다르다. 즉, 내용물이 같다고 해서 같은 배열이라고 볼 수 없다는 것이다. a[0]과 b[0]은 이름만 다를 뿐 아니라 해당 배열이 가지고 있는 내용물이 저장된 장소도 다르다고 보면 된다.
연속적인 기억공간 하나의 이름을 위의 변수가 a라는 변수라면 전체의 이름은 a이고, a에서 a[0], a[1], a[2] 인덱스 넘버를 이용해서 변수이름[인덱스번호]로 설정하여 해당 배열 내의 데이터로 접근가능하다.
그래서 배열은 반복문을 활용하여 코드를 작성할 때 , 용이하게 쓰인다.
개별로 작성되어 있다면, 인접되어 있지 않아 사이에 다른 메모리가 있기 때문에 기억공간 하나하나에 접근하기 어렵다.
1차원 배열은 선형구조 or 리스트형 구조라고 말하며, 2차원 배열은 행과 열로 이루어진 배열이다.
- 2차원 배열
행 ↓ / 열 → | ||
행과 열로 이루어져 있고 , 만약 array[2],[3] 이렇게 작성되어있다면 위 상단의 표처럼 그려져 있는 표라고 생각하면된다. 1차원 보다는 2차원이 더 많은 기억공간을 사용할 수 있다. 객체 자료형으로 만들어진 클래스도 기억공간이 붙어 있어 배열과 같은 형태로 보일 수 있지만, 클래스는 기억공간 안에 들어가는 데이터들이 각각 다른 데이터 타입들로 담아질 수 있다는 게 배열과 큰 차이점이 있다. 배열은 동일한 데이터 타입만 여러개 담을 수 있는 자료형이다.
배열의 문법 int[] → int 가 여러개 있는 구조라는 이름으로 배열을 설정할 수 있다.
배열자료형 → 정수 5개를 저장할 배열을 생성하시오. int[] a = new int[5]; 생성과 동시에 값을 저장하는 것을 초기화라 하며, 배열이 초기화 된 상황이다. 기본값은 int로 설정되었고, 값이 입력이 되어 있지 않더라도 배열은 생성을 하면 기억공간 안안에 int의 기본값인 0으로 초기화가 되어있다.
배열의 인덱스는 0번부터 시작이 되며 , 변수가 대표이름이 되고 인덱스(색인)번호에 따라 기억공간을 가르킬 수 있고, 배열의 변수 이름은 배열이 생성된 변수이름[index번호] 위와 같이 정해진다. 또 해당 배열의 데이터가 이동이 될 때, 번지를 가리키고 있는 a가 이동이 되기 때문에 a를 이동하게되면 언제든 a가 참조하고 있는 배열의 데이터들을 사용할 수 있기 때문에, 이동이 쉬워진다.
public class ArrayMake {
public static void main(String[] args) {
//Q.정수 5개를 저장 할 [배열]을 생성하시오.
int[] a = new int[5];
/*
5개의 연속적 메모리공간을 만든 후 정수 5개가 들어가야하기때문에 타입은 전부 int이다.
구조의 이름읜 int[]이고, 1차원 배열이되고 배열도 하나의 Object라고 여겨진다.
*/
for(int i=0; i < a.length; i++) {
a[i] += 10+i;
System.out.println(a[i]);
}
// 배열은 반복문을 사용하여 데이터를 출력하면 효율적으로 출력이 가능하다.
}
}
//출력 -> 10,11,12,13,14
배열의 초기화 (실습)
int[] a = {10, 20, 30, 40, 50}과 같이 작성하여 기본 값이 아닌 다른 값으로 초기화 할 수 있다.
이 때, 이렇게 작성하게 되면 new 연산자를 사용하지 않고도 초기화 하는 것이 가능해진다.
해당 리스트는 초기화 리스트라고 불리고, { }안에 적힌 갯수만큼 배열이 만들어진다.
new int[5]; 로 작성하지 않더라도 배열을 생성할 수 있는 문법이다!
int[] a; a = {10, 20, 30, 40, 50} 이와같이 두 줄로 작성하게 되면 초기화 되지 않는다 초기화 리스트는 변수와 한줄로 작성이 되어야지 에러가 나지 않고 올바르게 초기화 된다.
두 줄로 나뉘어 졌을때의 초기화 방법은 int[] a; / a=new int[]{10,20,30,40,50} 이렇게 작성해주어야 한다.
'[ BACKEND] > JAVA_Basic' 카테고리의 다른 글
[JAVA] Java의 조건문 (If / else / else if) (0) | 2023.06.08 |
---|---|
[JAVA] JAVA에서 쓰이는 연산자 (0) | 2023.06.07 |
[JAVA] 기본자료형(PDT) ? (0) | 2023.06.02 |
[JAVA] 프로그래밍 3대 요소 (0) | 2023.06.01 |
[JAVA] JAVA란 무엇인가 ? (0) | 2023.05.31 |