자바 자료구조 기초: 배열

배열이란?


배열은 같은 타입 의 여러 변수를 하나의 묶음으로 다루는 자료구조입니다.


     배열의 속성은 다음과 같습니다.


     - 같은 타입:   배열은 같은 타입의 데이터만 저장할 수 있습니다. (예: int 배열은 int형 값만, String 배열은 String형 값만)
     - 고정된 타입:   배열을 생성할 때 지정한 크기는 변경할 수 없습니다. 
     - 연속된 메모리: 배열의 요소들은 메모리 상에서 연속된 위치에 저장됩니다.
     - 인덱스 접근: 각 요소는 0부터 시작하는 인덱스를 사용하여 접근 할 수 있습니다.


배열을 사용하는 이유?
여러개의 데이터를 한번에 효율적으로 관리하고 싶을때.

배열의 선언과 생성

  • 배열을 사용하려면 먼저 배열을 선언하고 생성해야 하고 , 자바에서는 배열을 다음과 같이 두가지 방법으로 선언할 수 있습니다.
1
2
3
4
5
//방법 1: 타입 [] 변수이름 : 
int[] numbers;

//방법 2: 타입 변수이름[]; => 비추천
String names;


  • 배열을 생성할 때는 new 키워드를 사용합니다. 배열의 크기는 생성 시점에 지정해야하며, 한번 생성된 배열의 크기는 변경할 수 없습니다.
1
2
 numbers = new int[5]; //5개의 int 값을 저장할 수 있는 배열 생성
 names = new String[10]; //10개의 String 값을 저장할 수 있는 배열 생성


선언과 생성을 동시에 할 수도 있습니다.

1
2
int[] scores = new int[3]; //3개의 int값을 저장할 수 있는 배열 생성
Strint[] names2 = new String[5]; //5개의 String 값을 저장할 수 있는 배열 생성

배열의 길이와 인덱스

배열의 각 요소는 0부터 시작하는 인덱스를 사용하여 접근합니다.
첫 번째 요소의 인덱스는 0이고, 두 번째 요소의 인덱스는 1입니다. 따라서 마지막 요소의 인덱스는 배열의 길이에서 1을 뺀 값입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
int[] arr = new int[5];
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;
System.out.println(arr[0]); //출력:10
System.out.println(arr[1]); //출력:20
System.out.println(arr[4]); //출력:50

//배열의 길이 얻기
int length = arr.length;
System.out.println("배열의 길이 : "+length); //출력:5


만약 배열의 유효 범위를 벗어난 인덱스에 접근하려고 하면 IndexOutOfBoundsException이 발생하므로 주의해야합니다.

배열의 초기화

배열을 생성한 후에는 배열의 각 요소에 값을 할당해야 합니다. 배열을 초기화하는 방법은 여러가지가 있습니다.

직접 초기화
배열을 선언할 때 , 중괄호({})안에 값을 직접 나열하여 초기화할 수 있습니다.

1
2
int[] numbers = {1,2,3,4,5};
String[] names = {"Alice","Bob"};

new 키워드를 이용한 초기화
new 키워드를 사용하여 배열을 생성할 떄 값을 함꼐 초기화할 수 있습니다.

1
int[] scores = new int[] {80,90,75};

for 로프를 이용한 초기화
for 루프를 사용하여 배열의 각 요소에 값을 할당할 수 있습니다

1
2
3
4
int[] arr = new int[5];
for(int i =0; i < arr.length; i++){
    arr[i] = (i+1) * 10;
}


배열의 길이 변경

배열은 한 번 생성되면 크기를 변경할 수 없습니다. 만약 배열의 크기를 변경하고 싶다면 , 다음과 같은 방법을 사용해야합니다.

  • 1.새로운 배열 생성 및 복사: 더 큰 크기의 새로운 배열을 만들고 , 기존 배열의 내용을 복사합니다.</br>
  • 2.컬렉션 사용: ArrayList와 같은 동적 크기 컬렉션 클래스를 사용합니다.

배열의 출력

배열의 내용을 출력하는 방법은 여러가지가 있습니다.</br></br>

Arrays.toString() 메서드: 배열의 내용을 문자열로 출력할 수 있습니다.

1
2
int[] numbers = {1,2,3,4,5};
System.out.println(Arrays.toString(numbers));//출력{1,2,3,4,5}

</br>

for 루프: 배열의 각 요소를 순회하며 출력합니다.

1
2
3
for(int = 0; i < numbers.length; i++){
    Ststem.out.print(numbers[i] + " ");//출력 : 1 2 3 4 5 
}

</br>

향상된 for 루프 : 좀 더 간결한 코드로 배열을 순회하며 출력합니다. </br>

1
2
3
for(int number:numbers){
    System.out.print(number + " ");
}

</br>

배열 복사하기

배열의 내용을 복사하는 방법도 여러 가지이다.</br>

for 루프 이용

1
2
3
4
5
int[] arr1 = {1,2,3};
int[] arr2 = new int[arr1,length];
for(int i = 0; i < arr.length; i++){
    arr2[i] = arr1[i];
}

System.arraycopy()

1
2
3
int[] arr1 = {1,2,3};
int[] arr2 = new int[3];
System.arraycopy(arr1,0,arr2,0,arr1.length);

Arrays.copyOf()

1
2
int[] arr1 = {1,2,3};
int[] arr2 = Arrays.copyOf(arr1,arr1.length);

Arrays.copyOfRange()

1
2
int[] arr1 = {1,2,3,4,5};
int[] arr2 = Arrats.copyOfRange(arr1,1,4);

</br>

배열의 활용

배열은 다양한 방법으로 활용될 수 있습니다.</br>

  • 최댓값/최솟값 찾기: 배열에서 가장 큰 값 또는 가장 작은 갑승ㄹ 찾을 수 있습니다.
  • 배열 요소 섞기:배열 요소의 순서를 임의로 섞을 수 있습니다.
  • 임의의 값으로 채우기: 배열을 임의의 값으로 채울 수 있습니다.

Categories:

Updated:

Leave a comment