본문 바로가기

Java & Spring

[JAVA] - 배열(Array), ArrayList

배열(Array)

 

int a = 1;

char num = 'one'; 와 같이 변수는 하나의 값만 저장할 수 있다.

저장해야 할 값이 적으면 위와 같이 선언을 해도 큰 문제는 없지만 저장해야 할 값이 많아질수록 많은 변수가 필요하고, 변수에 값을 저장하는데 많은 시간이 들기 때문에 매우 비효율적이다.

이런 문제를 해결하기위해 배열을 사용하면 된다.

배열은 연속된 공간에 값들을 나열시키고, 값들에 대해 인덱스(Index)를 부여해 놓은 자료구조이다.

각 데이터를 인덱스와 1대1 대응시키며, 데이터가 메모리 상에 연속적으로 저장된다.

 

배열의 형태

 

인덱스는 대괄호 []와 같이 사용하여 배열 항목의 값을 저장하거나 읽을 때 사용된다.

예시로, 10개의 값을 배열로 선언해 보겠다.

 

int[] age = { 10, 15, 20, 25, 30, 35, 40, 45, 50, 55 }

 

이렇게 배열을 사용하여 변수를 선언하면 편하고 간결하게 작성할 수 있다.

 

중괄호 {}는 저장된 값들을 항목으로 가지는 배열을 힙에 생성하고, 번지를 리턴한다.

배열 변수는 리턴된 번지를 저장하기 때문에 참조가 이루어질 수 있는 것이다.

 

기존에 변수를 사용하던 방식과 배열로 변수를 선언했을때 차이

 

배열은 타입[] 변수; 또는 타입 변수[] ;로 선언할 수 있다.

배열 변수는 참조 변수이며, 배열도 객체이기 때문에 힙 영역에 생성되고 배열 변수는 힙 영역의 배열 주소를 저장한다.

만약 참조할 배열이 없으면 배열 변수도 null값으로 초기화할 수 있다.

만약 배열 변수가 null 값을 가지고 있는 상태에서 값을 읽거나 저장하게 되면 NullPointerException이 발생한다.

(NullPointerException : 선언만 하고 아무것도 참조하지 않는 null 상태인 변수에서 내용을 참조하려 할 때 발생하는 상황)

 

배열의 특징으로는 같은 타입의 값만 관리하며, 배열의 길이는 늘리거나 줄일 수 없다.

그리고, 배열 변수로 값을 저장한 후에 다른 값으로 넣어주고 싶은 경우에는 new를 붙여주면 된다.

 

int[] num = null;
num = new int[] {1, 2, 3, 4, 5};

 

ArrayList

 

ArrayList는 자바의 List 인터페이스를 상속받은 클래스 중 하나이다.

배열은 크기가 고정적이기 때문에 크기 유동적으로 사용하기에는 비교적 불편하지만,

ArrayList는 크기가 가변적으로 변하기 때문에 사용하기에 더 편리하고 많이 쓰인다.

 

ArrayList를 사용하려면 추가해줘야 하는 구문이 있으며 아래와 같이 생성할 수 있다. 

 

 import java.util.ArrayList; // ArrayList를 사용하기 위해 추가해야 하는 구문
 
 ArrayList<Integer> integers1 = new ArrayList<Integer>(); // 타입 지정
 ArrayList<Integer> integers2 = new ArrayList<>(); // 타입 생략

 

기본적으로 ArrayList를 생성할 때, 두 번째 방법과 같은 new ArrayList<>()와 같이 타입을 생략해서 생성한다.

 

ArrayList 속성

변수.add(Index) = 해당 Index의 값 설정

변수.set(Index, 변경 값) = 해당 Index의 값 변경

변수.remove(Index) = 해당 Index 제거 ( 해당 값이 사라지면 뒤에 있던 값들이 빈 공간을 채워주기 위해 당겨온다.)

변수.clear() = 모든 값 제거

 

import java.util.ArrayList;

public class Main{
	public static void main(String[] args) {
    	ArrayList<Integer> num = new ArrayList<>();
        
        num.add(1);
        num.add(2);
        num.add(3);
        num.add(4);
        
        num.set(1,4); // 2번째 요소인 num[1]값을 4로 변경
        num.remove(3); // 4번째 요소인 num[3] 제거
        
        
        System.out.println(num);
    }
}

코드 실행 결과

 

'Java & Spring' 카테고리의 다른 글

[JAVA] - 문자열 String 타입  (0) 2023.04.09
[JAVA] - JAVA의 구조 및 동작 원리  (0) 2023.04.09
[JAVA] - StringBuilder  (0) 2023.01.29
[JAVA] - Hash, HashTable (≒ HashMap)  (0) 2023.01.07
[JAVA] - 연결 리스트(LinkedList)  (0) 2023.01.07