JavaRush /Java Blog /Random-KO /Java의 배열

Java의 배열

Random-KO 그룹에 게시되었습니다
창고에 있는 세포를 상상해 보십시오. 각각은 고유한 번호를 가지며 일종의 "수하물" 개체를 포함합니다. 또는 모든 종류의 와인에 번호가 매겨져 있고 주문할 때 음료수 번호만 알려주는 와인 리스트도 있습니다. 또는 학생 "Andreev"가 첫 번째 셀에 기록되고 "Yakovlev"가 마지막 셀에 기록되는 그룹의 학생 목록입니다. 또는 각 승객에게 특정 번호의 좌석이 할당된 비행기 승객 목록이 있습니다. Java에서는 유사한 구조, 즉 동종의 데이터가 많이 있는 작업을 수행하기 위해 Java의 배열을 자주 사용합니다.

배열이란 무엇입니까?

배열은 동일한 유형의 요소를 저장하는 데이터 구조입니다. 이는 번호가 매겨진 셀 집합으로 생각할 수 있으며, 각 셀에는 일부 데이터(셀당 하나의 데이터 요소)가 포함될 수 있습니다. 특정 셀에 대한 액세스는 해당 번호를 통해 수행됩니다. 배열의 요소 수를 인덱스 라고도 합니다 . Java의 경우 배열은 동종입니다. 즉, 모든 셀이 동일한 유형의 요소를 저장합니다. 따라서 정수 배열에는 정수(예: int 유형 )만 포함되고, 문자열 배열에는 문자열만 포함되며, 우리가 만든 Dog 클래스의 요소 배열에는 Dog 객체 만 포함됩니다 . 즉, Java에서는 배열의 첫 번째 셀에 정수를 넣을 수 없고, 두 번째 셀에 문자열을 , 세 번째 셀에 “dog”을 넣을 수 없습니다. Java의 배열

배열 선언

배열을 선언하는 방법은 무엇입니까?

다른 변수와 마찬가지로 Java의 배열도 선언해야 합니다. 두 가지 방법 중 하나로 이 작업을 수행할 수 있습니다. 그것들은 동일하지만 첫 번째 것이 Java 스타일과 더 일치합니다. 두 번째는 C 언어의 유산입니다(많은 C 프로그래머가 Java로 전환했으며 편의를 위해 대체 방법이 남았습니다). 이 표는 Java에서 배열을 선언하는 두 가지 방법을 보여줍니다.
아니요. 배열 선언, Java 구문 코멘트
1.
dataType[] arrayName;
int[] myArray;

Object[]
arrayOfObjects;
이런 방식으로 배열을 선언하는 것이 좋습니다. 이는 Java 스타일입니다.
2.
dataType arrayName[];
int myArray[];

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

배열 만들기

배열을 만드는 방법은 무엇입니까?

다른 객체와 마찬가지로 new 연산자 를 사용하여 Java 배열을 생성할 수 있습니다. 즉, 메모리 공간을 예약할 수 있습니다 . 이는 다음과 같이 수행됩니다.
new typeOfArray [length];
여기서 typeOfArray 는 배열의 유형이고 length 는 배열의 길이(즉, 셀 수)이며 정수( int )로 표시됩니다. 그러나 여기서는 배열에 메모리만 할당했을 뿐 생성된 배열을 이전에 선언한 변수와 연결하지 않았습니다. 일반적으로 배열은 먼저 선언된 다음 생성됩니다. 예를 들면 다음과 같습니다.
int[] myArray; // array declaration
myArray = new int[10]; // creation, that is, allocation of memory for an array of 10 elements of type int
여기서는 myArray 라는 정수 배열을 선언한 다음 이 배열이 10개의 셀(각각은 정수를 저장함)로 구성된다고 선언했습니다. 그러나 다음 단축 구문을 사용하여 선언 직후에 배열을 생성하는 것이 훨씬 더 일반적입니다.
int[] myArray = new int[10]; // declaration and allocation of memory "in one bottle"
메모:new 를 사용하여 배열을 생성한 후 해당 셀은 기본값으로 채워집니다. (이 예에서와 같이) 숫자 유형의 경우 이는 0이고, 부울의 경우 false 이고 , 참조 유형의 경우 - null 입니다 . 따라서 수술 후
int[] myArray = new int[10];
우리는 10개의 정수 배열을 얻었고, 프로그램 중에 이것이 변경될 때까지 각 셀에는 0이 포함됩니다.

배열에 대한 자세한 내용은 " 배열에 대한 정보 " 기사에서 확인할 수 있습니다.

Java의 배열 길이

위에서 말했듯이 배열의 길이는 배열이 설계된 요소의 수입니다. 배열의 길이는 일단 생성되면 변경할 수 없습니다. 메모:Java에서는 배열 요소의 번호가 0부터 시작됩니다. 즉, 10개의 요소로 구성된 배열이 있는 경우 배열의 첫 번째 요소는 인덱스 0을 가지며 마지막 요소는 인덱스 9를 갖습니다. 길이Java의 배열 - 3 변수를 사용하여 배열의 길이에 액세스할 수 있습니다 . 예:
int[] myArray = new int[10]; // created an array of integers with 10 elements and named it myArray
System.out.println(myArray.length); // printed to the console the length of the array, that is, the number of elements that we can put in the array
프로그램 출력:
10

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

Java에서 배열을 만드는 방법은 이미 명확합니다. 이 절차를 수행하면 빈 배열이 생성되지 않고 기본값으로 채워진 배열이 생성됩니다. 예를 들어 int 의 경우 0이 되며 참조 유형의 데이터가 있는 배열이 있는 경우 기본적으로 각 셀에 null이 기록됩니다 . 우리는 인덱스를 통해 배열 요소에 접근합니다(즉, 값을 쓰거나 화면에 표시하거나 일부 작업을 수행합니다). 배열을 초기화하는 것은 배열을 특정 데이터로 채우는 것입니다(기본값은 아님). 예: 4개의 계절로 구성된 배열을 만들고 이를 계절의 이름인 문자열 값으로 채워 보겠습니다.
String[] seasons  = new String[4]; /* declared and created an array. Java allocated memory for an array of 4 strings, and now each cell is null (because the string is a reference type)*/

seasons[0] = "Winter"; /* in the first cell, that is, in the cell with a zero number, we wrote the string Winter. Here we get access to the zero element of the array and write a specific value there */
seasons[1] = "Spring"; // do the same procedure with cell number 1 (second)
seasons[2] = "Summer"; // ...number 2
seasons[3] = "Autumn"; // and with the last one, number 3
이제 배열의 네 셀 모두 계절 이름을 포함합니다. 초기화와 선언을 결합하여 초기화를 다르게 수행할 수도 있습니다.
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]);
}
결과적으로 프로그램은 다음과 같은 결과를 출력합니다.
겨울 봄 여름 가을

1차원 및 다차원 Java 배열

숫자 배열, 문자열 배열, 일부 객체 배열이 아닌 배열 배열을 만들고 싶다면 어떻게 해야 할까요? Java를 사용하면 이를 수행할 수 있습니다. 이미 익숙한 배열 int[] myArray = new int[8] 은 소위 1차원 배열입니다. 그리고 배열의 배열을 2차원이라고 합니다. 행 번호와 열 번호가 있는 테이블과 같습니다. 또는 행렬에서 선형 대수학의 시작을 배웠다면. Java의 배열 - 4그러한 배열이 필요한 이유는 무엇입니까? 특히, 동일한 행렬과 테이블은 물론 구조적으로 유사한 객체를 프로그래밍하는 데 사용됩니다. 예를 들어 체스 경기장을 8x8 배열로 지정할 수 있습니다. 다차원 배열은 다음과 같이 선언되고 생성됩니다.
int[][] myTwoDimentionalArray = new int [8][8];
myTwoDimentionalArray[0][0]이 배열에는 , myTwoDimentionalArray[0][1], 등 정확히 64 myTwoDimentionalArray[1][0]개의 요소가 있습니다 . 따라서 이를 사용하여 체스판을 나타내는 경우 셀 A1은 을 나타내고 E2는 을 나타냅니다 . 둘이 있는 곳에는 셋이 있다. Java에서는 배열의 배열... 배열의 배열 등을 지정할 수 있습니다. 사실, 3차원 이상의 배열은 거의 사용되지 않습니다. 그러나 3차원 배열을 사용하면 루빅스 큐브 등을 프로그래밍할 수 있습니다. myTwoDimentionalArray[1][1]myTwoDimentionalArray[7][7]myTwoDimentionalArray[0][0]myTwoDimentionalArray[4][1]

또 무엇을 읽어야 할까요?

다차원 배열

배열 작업에 유용한 방법

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() 을 재정의하지 않는다는 것입니다 . 즉, 전체 배열(“ 화면에 배열 인쇄 ”와 같이 요소별로 표시하지 않고)을 화면에 직접 표시하려고 하면( System.out.println(myArray)) 클래스 이름과 배열의 16진수 해시 코드를 얻게 됩니다. (이것은 Object.toString() 에 의해 정의됩니다 ). 초보자라면 방법에 대한 설명이 잘 이해되지 않을 수도 있습니다 toString. 첫 번째 단계에서는 이것이 필요하지 않지만 이 방법을 사용하면 배열의 출력이 단순화됩니다. Java를 사용하면 루프를 사용하지 않고도 배열을 쉽게 표시할 수 있습니다. 이에 대한 자세한 내용은 아래 예에서 확인하세요.

정렬, BinarySearch 및 toString의 예

정수 배열을 만들고, toString 을 사용하여 화면에 표시하고, sort 메소드를 사용하여 정렬하고 , 그 안에서 숫자를 찾아보겠습니다.
class Main {
    public static void main(String[] args) {
        int[] array = {1, 5, 4, 3, 7}; //declaring and initializing the array
        System.out.println(array);//trying to display our array on the screen without the toString method - we get a hexadecimal number
        System.out.println(Arrays.toString(array));//печатаем массив "правильно"
        Arrays.sort(array, 0, 4); // sort the entire array from zero to the fourth member
        System.out.println(Arrays.toString(array));//print the sorted array to the screen
        int key = Arrays.binarySearch(array, 5); // ищем key - число 5 в отсортированном массиве.
        //binarySearch method will return the index of the sorted array element, in which the required number is "hidden"
        System.out.println(key);//распечатываем индекс искомого числа
System.out.println(Arrays.binarySearch(array, 0));//а теперь попробуем найти число, которого в массиве нет,
        // and immediately display the result on the screen

    }
}
프로그램 출력:
[I@1540e19d [1, 5, 4, 3, 7] [1, 3, 4, 5, 7] 3 -1
첫 번째 줄은 toString 없이 배열을 표시하려는 시도이고 , 두 번째 줄은 toString 을 사용하여 배열을 표시하고 , 세 번째 줄은 정렬된 배열이고, 네 번째 줄은 정렬된 배열에서 원하는 숫자 5의 인덱스입니다. 0이므로 배열의 네 번째 요소의 인덱스는 3)입니다. 다섯 번째 줄에는 -1 값이 표시됩니다 . 배열에는 그러한 인덱스가 없습니다. 출력은 원하는 요소(이 경우 0)가 배열에 없다는 신호를 보냅니다.

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

Arrays 클래스 및 그 사용 - 이 문서에서는 Array 클래스의 일부 메서드를 설명합니다.

배열의 주요 사항

  • 배열의 주요 특징: 배열에 배치된 데이터 유형, 이름 및 길이.
    후자는 초기화(배열에 대한 메모리 할당) 중에 결정되며, 처음 두 매개변수는 배열을 선언할 때 결정됩니다.

  • 배열 크기(셀 수)는 int 로 정의되어야 합니다.

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

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

  • Java의 다른 곳과 마찬가지로 배열에서도 요소의 번호는 0부터 시작됩니다.

  • 배열 생성 절차가 끝나면 기본값으로 채워집니다.

  • Java의 배열은 C++의 배열과 다르게 구성됩니다. 동적 배열에 대한 포인터와 거의 동일합니다.

배열에 관한 유용한 자료

배열에 대해 더 알고 싶으십니까? 아래 기사들을 살펴보시기 바랍니다. 이 주제에 대한 흥미롭고 유용한 정보가 많이 있습니다.
  1. 배열 에 관한 것 - 배열에 관한 좋은 상세 기사

  2. Arrays 클래스 및 그 사용 - 이 문서에서는 Array 클래스 의 일부 메서드를 설명합니다.

  3. 다차원 배열 - 예제와 함께 다차원 배열에 대한 자세한 기사입니다.

  4. null이 아닌 길이가 0인 배열 반환 - 효과적인 프로그래밍 작성자인 Joshua Bloch가 빈 배열을 더 효과적으로 반환하는 방법에 대해 설명합니다.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION