CodeGym /Java Blog /무작위의 /Java의 배열
John Squirrels
레벨 41
San Francisco

Java의 배열

무작위의 그룹에 게시되었습니다
창고에 있는 캐비닛을 상상해 보십시오. 그들 각각은 고유한 번호를 가지고 있으며 각각 Baggage 객체를 저장합니다. 또는 모든 종류의 와인에 번호가 매겨져 있고 음료 번호를 지정하여 주문하는 와인 목록. 또는 "Adams"가 첫 번째 위치에 기록되고 "Zimmer"가 마지막 위치에 기록되는 학생 목록입니다. 또는 각 승객에게 번호가 매겨진 좌석이 할당된 비행기의 승객 목록. Java에서 배열은 종종 이러한 구조, 즉 동종 데이터 세트와 함께 작동하는 데 사용됩니다.

CodeGym 과정의 배열

CodeGym에서는 Java 구문 퀘스트의 레벨 7에서 배열 작업을 시작합니다. 어레이 관련 기술을 통합하기 위한 다양한 수준의 8가지 작업과 함께 3개의 강의가 제공됩니다. 그러나 과정 중에 배열을 여러 번 접하게 될 것입니다(특히 배열 클래스는 Java Collections 퀘스트 및 향후 작업의 일부로 학습할 것입니다.

배열이란 무엇입니까?

배열은 동일한 유형의 요소를 저장하는 데이터 구조입니다. 번호가 매겨진 셀 집합으로 생각할 수 있습니다. 각 셀에 일부 데이터를 입력할 수 있습니다(셀당 하나의 데이터 요소). 특정 셀은 해당 번호를 사용하여 액세스합니다. 배열의 요소 번호를 인덱스라고도 합니다 . Java에서 배열은 동종입니다. 즉, 배열의 모든 셀에는 동일한 유형의 요소가 포함됩니다. 따라서 정수 배열은 정수( int )만 포함하고, 문자열 배열은 문자열만 포함하며, 우리가 만든 Dog 클래스의 인스턴스 배열은 Dog 개체 만 포함합니다 . 즉, Java는 배열의 첫 번째 셀에 정수를, 두 번째 셀에 문자열을 , 세 번째 셀에 Dog를 넣도록 허용하지 않습니다.Java의 배열 - 2

배열 선언

배열을 어떻게 선언합니까?

모든 변수와 마찬가지로 배열은 Java에서 선언해야 합니다. 이는 두 가지 방법 중 하나로 수행할 수 있습니다. 그것들은 동일하지만 첫 번째 방법이 Java 스타일과 더 일치합니다. 두 번째는 C 언어의 유산입니다. 많은 C 프로그래머가 Java로 전환했으며 편의를 위해 대체 방법이 유지되었습니다. 이 표는 Java에서 배열을 선언하는 두 가지 방법을 보여줍니다.
아니요. 배열 선언, Java 구문 논평
1.
dataType[] 배열명;

int[] myArray;

Object[] 
arrayOfObjects;  
이런 식으로 배열을 선언하는 것이 좋습니다. 이것은 자바 스타일입니다.
2.
데이터 유형 arrayName[];

int myArray[];

Object 
arrayOfObjects[];
C/C++에서 상속받은 배열 선언 방식, Java에서 작동
두 경우 모두 dataType은 배열에 있는 변수의 유형입니다. 예제에서는 두 개의 배열을 선언했습니다. 하나는 int 를 저장 하고 다른 하나는 Object 객체를 저장합니다. 따라서 배열 선언에는 이름과 형식(배열 요소의 형식)이 있습니다. ArrayName은 배열의 이름입니다.

배열 만들기

어레이는 어떻게 생성합니까?

다른 개체와 마찬가지로 Java 배열을 만들 수 있습니다. 즉, new 연산자를 사용하여 메모리에 위치를 예약할 수 있습니다. 이것이 수행되는 방법입니다.

new typeOfArray[length]; 
여기서 typeOfArray 는 배열의 유형이고 길이는 정수( int)로 표현되는 길이(즉, 셀 수)입니다. 그러나 여기서는 배열에 대한 메모리만 할당했다는 점에 유의하십시오. 선언된 배열을 이전에 선언된 변수와 연결하지 않았습니다. 일반적으로 배열은 먼저 선언된 다음 인스턴스화됩니다. 예를 들면 다음과 같습니다.

int[] myArray; // Array declaration
myArray = new int[10]; // Create (allocate memory for) an array of 10 ints
여기에서 myArray 라는 정수 배열을 만들어 컴파일러에 10개의 셀로 구성되어 있음을 알립니다(각 셀에는 정수가 포함됨). 그러나 다음과 같은 축약된 구문을 사용하여 배열을 선언하는 즉시 배열을 만드는 것이 훨씬 더 일반적입니다.

int[] myArray = new int [10]; // Declare the array and allocate memory "in one blow"
참고:new 연산자를 사용하여 배열을 만든 후 해당 셀에는 기본값이 포함됩니다. 숫자 유형(이 예제에서와 같이)의 경우 기본값은 0이고 부울 유형 의 경우 false 이며 참조 유형의 경우 null 입니다 . 따라서 이 문을 실행한 후

int[] myArray = new int[10];
우리는 10개의 정수 배열을 얻었고 프로그램이 값을 변경하기 위해 무언가를 할 때까지 각 셀에는 0이 포함됩니다.

" 배열 에 대한 정보 " 문서에서 배열에 대한 자세한 정보를 찾을 수 있습니다.

Java의 배열 길이

위에서 말했듯이 배열의 길이는 배열이 유지하도록 설계된 요소의 수입니다. 배열의 길이는 생성된 후에는 변경할 수 없습니다. 참고배열 요소는 Java에서 0부터 시작하여 번호가 매겨집니다. 따라서 10개의 요소로 구성된 배열이 있는 경우 첫 번째 요소의 인덱스는 0이고 마지막 요소의 인덱스는 9입니다. lengthJava의 배열 - 3 변수를 사용하여 배열 길이를 얻을 수 있습니다 . 예를 들어:

int[] myArray = new int[10]; // Create an int array for 10 elements and name it myArray
System.out.println(myArray.length); // Display the array's length, i.e. the number of elements we can put into the array
산출:

10

배열 초기화 및 해당 요소에 액세스

이제 우리는 Java에서 배열을 만드는 방법을 알고 있습니다. 프로세스는 빈 배열이 아니라 기본값으로 채워진 배열을 얻습니다. 예를 들어 int 배열의 경우 이것은 0이고 참조 유형의 배열이 있는 경우 각 셀의 기본값은 null 입니다 . 인덱스를 통해 배열 요소에 액세스합니다(예: 값을 설정하거나 화면에 표시하거나 일부 작업을 수행하기 위해). 배열 초기화는 특정 값(기본값 제외)으로 배열을 채우는 프로세스입니다. 예: 4계절에 대한 문자열 배열을 만들고 계절 이름으로 채웁니다.

String[] seasons = new String[4]; /* Declare and create an array. Java allocates memory for an array of 4 strings, and each cell is set to null (since String is a reference type) */ 

seasons[0] = "Winter"; /* We set the first cell, i.e. the cell with index zero, to "Winter". Here we access the zeroth element of the array and write a specific value to it. */ 
seasons[1] = "Spring"; // We follow a similar procedure for the cell with index 1 (the second cell)
seasons[2] = "Summer"; // ... index 2
seasons[3] = "Autumn"; // and finally, index 3
이제 계절의 이름이 배열의 4개 셀에 기록됩니다. 선언과 초기화를 결합하여 다른 방식으로 배열을 초기화할 수 있습니다.

String[] seasons = new String[] {"Winter", "Spring", "Summer", "Autumn"};
또한 new 연산자를 생략할 수 있습니다.

String[] seasons = {"Winter", "Spring", "Summer", "Autumn"};

Java에서 화면에 배열을 어떻게 표시합니까?

for 루프 를 사용하여 화면(예: 콘솔)에 배열 요소를 표시할 수 있습니다 . 배열을 표시하는 또 다른 짧은 방법은 " 배열 작업에 유용한 방법 " 이라는 제목의 단락에서 설명합니다 . 그동안 루프를 사용하여 배열이 표시되는 이 예를 살펴보십시오.

String[] seasons = new String {"Winter", "Spring", "Summer", "Autumn"}; 
for (int i = 0; i < 4; i++) {
System.out.println(seasons[i]); 
}
프로그램은 다음을 표시합니다.

Winter 
Spring 
Summer 
Autumn

Java의 1차원 및 다차원 배열

그러나 숫자, 문자열 또는 기타 객체의 배열이 아니라 배열의 배열을 만들고 싶다면 어떻게 해야 할까요? Java를 사용하면 이 작업을 수행할 수 있습니다. 우리에게 이미 친숙한 일종의 배열( int[] myArray = new int[8] )은 1차원 배열로 알려져 있습니다. 그러나 배열의 배열을 2차원 배열이라고 합니다. 행 번호와 열 번호가 있는 테이블과 같습니다. 또는 선형 대수학의 기초를 배웠다면 행렬로 생각할 수 있습니다. Java의 배열 - 4왜 그런 배열이 필요한가요? 음, 유사한 구조를 가진 다른 개체뿐만 아니라 행렬과 테이블을 프로그래밍하는 것입니다. 예를 들어 체스판은 8x8 배열로 나타낼 수 있습니다. 다차원 배열은 다음과 같이 선언되고 생성됩니다.

Int[][] myTwoDimentionalArray = new int[8][8];
배열 에는 정확히 64 개의 요소 있습니다 . . 따라서 체스 판을 나타내는 데 사용하면 A1은 myTwoDimentionalArray[0][0] 에 해당 하고 E2는 myTwoDimentionalArray[4][1] 에 해당합니다 . 그러나 우리는 이것을 얼마나 멀리 밀 수 있습니까? Java에서는 배열의 배열... 배열의 배열 배열 등을 지정할 수 있습니다. 물론 3차원 및 고차원 배열은 거의 사용되지 않습니다. 즉, 예를 들어 3차원 배열을 사용하여 루빅스 큐브를 프로그래밍할 수 있습니다.

배열 작업에 유용한 방법

Java에는 배열 작업을 위한 java.util.Arrays 클래스가 있습니다. 일반적으로 배열에서 수행되는 가장 일반적인 작업은 초기화(요소 채우기), 요소 검색(인덱스 기준), 정렬 및 검색입니다. 배열 검색 및 정렬은 다른 날의 주제입니다. 한편으로는 여러 검색 및 정렬 알고리즘을 직접 작성하는 것이 좋습니다. 반면에 최고의 알고리즘은 이미 구현되어 표준 Java 라이브러리에 포함되어 있으며 합법적으로 사용할 수 있습니다. 다음은 이 클래스의 세 가지 유용한 메서드입니다.

배열 정렬

void sort(int[] myArray, int fromIndex, int toIndex) 메서드는 정수 배열 또는 하위 배열을 오름차순으로 정렬합니다.

배열에서 요소 검색

int binarySearch(int[] myArray, int fromIndex, int toIndex, int key) . 이 메서드는 fromIndex 에서 toIndex 까지 정렬된 myArray 배열 또는 하위 배열 에서 요소를 찾습니다 . 항목이 발견되면 해당 인덱스를 반환합니다. 그렇지 않으면 (-fromIndex)-1 을 반환합니다 .

배열을 문자열로 변환

String toString(int[] myArray) 메서드는 배열을 문자열로 변환합니다. Java에서 배열은 toString() 을 재정의하지 않습니다 . 즉, " Display an array on the screen " 단락에서와 같이 한 번에 하나의 요소가 아니라 전체 배열을 한 번에 표시하려고 하면 (System.out.println(myArray)) 클래스의 이름과 배열의 16진수 해시( Object.toString() 에 의해 정의됨 ). 초보자라면 toString 메소드에 대한 설명이 잘 이해되지 않을 수 있습니다. 처음에는 그럴 필요가 없지만 이 방법을 사용하면 배열을 더 쉽게 표시할 수 있습니다. Java를 사용하면 루프를 사용하지 않고도 배열을 쉽게 표시할 수 있습니다. 아래 예는 이를 보여줍니다.

sort, binarySearch 및 toString을 사용하는 예

정수 배열을 만들고, toString 을 사용하여 표시하고, sort 메서드를 사용하여 정렬한 다음 그 안에서 숫자를 찾아봅시다.

class Main {
    public static void main(String[] args) {
        int[] array = {1, 5, 4, 3, 7}; // Declare and initialize the array
        System.out.println(array); // Try to display our array without using the toString method — the result is a hexadecimal number
        System.out.println(Arrays.toString(array)); // Display the array correctly 
        Arrays.sort(array, 0, 4); // Sort the entire array from the zeroth to the fourth element
        System.out.println(Arrays.toString(array)); // Display the sorted array
        int key = Arrays.binarySearch(array, 5); // Look for the number 5 in the sorted array. 
        // The binarySearch method will return the index of the array element we are searching for
        System.out.println(key); // Display the index of the number we searched for 
System.out.println(Arrays.binarySearch(array, 0)); // Now try to find a number that isn't in the array, 
        // and immediately display the result

    }
}
산출:

[I@1540e19d 
[1, 5, 4, 3, 7] 
[1, 3, 4, 5, 7] 
3 
-1
첫 번째 문자열은 toString 을 사용하지 않고 배열을 표시하려는 시도입니다 . 두 번째는 toString 을 사용하여 표시되는 배열입니다 . 세 번째는 정렬된 배열입니다. 네 번째는 정렬된 배열에서 검색한 숫자의 인덱스(5)입니다(0부터 계산하므로 배열의 네 번째 요소 인덱스는 3임). 다섯 번째 문자열에는 -1이 표시됩니다. 잘못된 배열 인덱스입니다. 검색한 숫자(이 경우 0)가 배열에 없음을 나타냅니다.

Array 클래스의 메서드에 대한 추가 정보

Arrays 클래스 및 그 사용 — 이 기사에서는 Array 클래스의 일부 메서드에 대해 설명합니다.
Arrays 클래스에는 배열 작업을 위한 18가지 중요한 메서드가 있습니다.

간단히 말해서 배열

  • 배열의 필수 특성: 배열에 배치된 데이터의 유형, 이름 및 길이.
    마지막 속성은 배열이 생성될 때(배열에 메모리가 할당될 때) 결정됩니다. 처음 두 속성은 배열이 선언될 때 결정됩니다.

  • 배열 크기(셀 수)는 int여야 합니다 .

  • 배열을 만든 후에는 배열의 길이를 변경할 수 없습니다.

  • 배열 요소는 인덱스로 액세스할 수 있습니다.

  • Java의 다른 모든 것과 마찬가지로 배열의 요소는 0부터 시작하여 번호가 매겨집니다.

  • 배열이 생성되면 기본값으로 채워집니다.

  • Java의 배열은 C++의 배열과 다릅니다. 동적 배열에 대한 포인터와 거의 같습니다.

배열에 대한 유용한 자료

배열에 대해 더 알고 싶으십니까? 아래 기사를 확인하십시오. 이 주제에 대한 흥미롭고 유용한 자료가 많이 포함되어 있습니다.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION