자바 자료구조 기초: 배열
배열이란?
배열은 같은 타입 의 여러 변수를 하나의 묶음으로 다루는 자료구조입니다.
배열의 속성은 다음과 같습니다.
- 같은 타입: 배열은 같은 타입의 데이터만 저장할 수 있습니다. (예: 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>
- 최댓값/최솟값 찾기: 배열에서 가장 큰 값 또는 가장 작은 갑승ㄹ 찾을 수 있습니다.
- 배열 요소 섞기:배열 요소의 순서를 임의로 섞을 수 있습니다.
- 임의의 값으로 채우기: 배열을 임의의 값으로 채울 수 있습니다.
Leave a comment