배열은 모든 프로그래밍 언어에 있어서 중요한 데이터 구조 중 하나입니다. 물론, 언어마다 배열을 다르게 구현하고 처리합니다.
Java 언어로 제공되는 배열은 동일한 유형의 고정 크기 요소를 저장하는 데 사용됩니다.
100개의 독립 변수 number0, number1, ...., number99를 직접 선언하는 대신 숫자[100]과 같은 배열 변수를 선언할 수 있습니다.
이 튜토리얼에서는 Java 배열의 선언, 생성 및 초기화를 소개하고 해당 코드를 제공합니다.
프로그램에서 배열을 사용하려면 먼저 배열 변수를 선언해야 합니다. 다음은 배열 변수를 선언하는 구문입니다.
dataType[]arrayRefVar;//首选的方法或dataTypearrayRefVar[];//效果相同,但不是首选方法
참고: 배열 변수를 선언하려면 dataType[] arrayRefVar 선언 스타일을 사용하는 것이 좋습니다. dataType arrayRefVar[] 스타일은 C/C++ 언어에서 유래되었으며 C/C++ 프로그래머가 Java 언어를 빠르게 이해할 수 있도록 Java에서 채택되었습니다.
두 구문에 대한 코드 예제는 다음과 같습니다.
double[]myList;//首选的方法或doublemyList[];//效果相同,但不是首选方法
Java 언어는 new 연산자를 사용하여 배열을 만듭니다.
arrayRefVar=newdataType[arraySize];
위 구문 설명은 두 가지 작업을 수행합니다.
1. dataType[arraySize]를 사용하여 배열을 만듭니다.
2. 새로 생성된 배열의 참조를 arrayRefVar 변수에 할당합니다.
배열 변수 선언과 배열 생성은 아래와 같이 하나의 명령문으로 완료할 수 있습니다.
dataType[]arrayRefVar=newdataType[arraySize];
또한 다음 방법을 사용하여 배열을 생성할 수도 있습니다.
dataType[]arrayRefVar={value0,value1,...,valuek};
배열의 요소는 인덱스로 액세스됩니다. 배열 인덱싱은 0부터 시작하므로 인덱스 값의 범위는 0부터 arrayRefVar.length-1까지입니다.
그런 다음 어레이에 공간이 생기면 다음과 같은 방식으로 작동할 수 있습니다.
예: int 배열 정의
public class ArrayDemo { public static void main(String args[]) { int data[] = new int[3]; /*开辟了一个长度为3的数组*/ data[0] = 10; // 第一个元素 data[1] = 20; // 第二个元素 data[2] = 30; // 第三个元素 for(int x = 0; x < data.length; x++) { System.out.println(data[x]); //通过循环控制索引 } } }
공간을 선언하고 할당하는 것 외에도 배열 자체에는 또 다른 할당 모드가 있습니다.
예: 단계별 모드를 사용하여 배열 공간 열기
public class ArrayDemo { public static void main(String args[]) { int data[] = null; data = new int[3]; /*开辟了一个长度为3的数组*/ data[0] = 10; // 第一个元素 data[1] = 20; // 第二个元素 data[2] = 30; // 第三个元素 for(int x = 0; x < data.length; x++) { System.out.println(data[x]); //通过循环控制索引 } } }
그러나 배열은 참조 데이터 유형이므로 배열을 사용하기 전에 공간을 할당(인스턴스화)해야 합니다. 할당된 공간이 없는 배열을 사용하면 NullPointerException
메시지가 나타납니다.
public class ArrayDemo { public static void main(String args[]) { int data[] = null; System.out.println(data[x]); } }
이 원리는 앞에서 설명한 것과 정확히 같습니다.
배열은 개발 중에 확실히 사용되지만 위와 같은 작업은 드뭅니다. 향후 실제 개발에서는 배열 개념이 더 많이 사용될 예정이며, 직접 사용하는 경우 대부분은 단지 for 루프 출력에 불과합니다.
배열의 요소 유형과 배열의 크기가 결정되므로 배열 요소를 처리할 때 일반적으로 기본 루프나 foreach 루프를 사용합니다.
이 예제에서는 배열을 생성, 초기화 및 조작하는 방법을 완벽하게 보여줍니다.
publicclassTestArray{ publicstaticvoidmain(String[]args){ double[]myList={1.9,2.9,3.4,3.5}; //打印所有数组元素for(inti=0;i<myList.length;i++){ System.out.println(myList[i]+""); } //计算所有元素的总和doubletotal=0; for(inti=0;i<myList.length;i++){ total+=myList[i]; } System.out.println("Totalis"+total); //查找最大元素doublemax=myList[0]; for(inti=1;i<myList.length;i++){ if(myList[i]>max)max=myList[i]; } System.out.println("Maxis"+max); } }
위 예제의 컴파일 및 실행 결과는 다음과 같습니다.
1.9 2.9 3.4 3.5 Totalis11.7 Maxis3.5
JDK 1.5에는 첨자를 사용하지 않고 배열을 반복하는 foreach 루프 또는 향상된 루프라는 새로운 유형의 루프가 도입되었습니다.
구문 형식은 다음과 같습니다.
for(type element: array){ System.out.println(element); }
이 예는 myList 배열의 모든 요소를 표시하는 데 사용됩니다.
publicclassTestArray{ publicstaticvoidmain(String[]args){ double[]myList={1.9,2.9,3.4,3.5}; //打印所有数组元素for(doubleelement:myList){ System.out.println(element); } } }
위 예제의 컴파일 및 실행 결과는 다음과 같습니다.
1.9 2.9 3.4 3.5
배열은 메소드에 매개변수로 전달될 수 있습니다. 예를 들어, 다음 예제는 int 배열의 요소를 인쇄하는 메서드입니다.
publicstaticvoidprintArray(int[]array){ for(inti=0;i<array.length;i++){ System.out.print(array[i]+""); } }
다음 예에서는 printArray 메소드를 호출하여 3, 1, 2, 6, 4 및 2를 인쇄합니다.
printArray(newint[]{3,1,2,6,4,2});
publicstaticint[]reverse(int[]list){ int[]result=newint[list.length]; for(inti=0,j=result.length-1;i<list.length;i++,j--){ result[j]=list[i]; } returnresult; }
위의 예에서는 결과 배열이 함수의 반환 값으로 사용됩니다.
java.util.Arrays 클래스는 배열을 편리하게 조작할 수 있으며, 이 클래스가 제공하는 모든 메소드는 정적입니다. 다음과 같은 기능이 있습니다:
fill 메소드를 통해 배열에 값을 할당합니다.
배열 정렬: 오름차순으로 정렬 방법을 사용합니다.
배열 비교: 배열의 요소 값이 동일한지 비교하려면 equals 메서드를 사용하세요.
배열 요소 검색: BinarySearch 메소드는 정렬된 배열에 대해 이진 검색 작업을 수행할 수 있습니다.
구체적인 지침은 아래 표를 참조하세요.
일련번호 | 방법 및 지침 |
---|---|
1 | public static int BinarySearch(Object[] a, Object key)는 이진 검색 알고리즘을 사용하여 주어진 배열에서 주어진 값(Byte, Int, double 등)을 가진 객체를 검색합니다. 호출하기 전에 배열을 정렬해야 합니다. 조회 값이 배열에 포함되어 있으면 검색 키의 인덱스를 반환하고, 그렇지 않으면 (-( 삽입 지점 ) - 1)을 반환합니다. |
2 | public static boolean equals(long[] a, long[] a2) 지정된 두 개의 긴 배열이 서로 같으면 true를 반환합니다. 두 배열에 동일한 수의 요소가 포함되어 있고 두 배열의 해당 요소 쌍이 모두 동일한 경우 두 배열은 동일한 것으로 간주됩니다. 즉, 두 배열이 동일한 순서로 동일한 요소를 포함하면 동일합니다. 다른 모든 기본 데이터 유형(Byte, short, Int 등)에도 동일한 접근 방식이 적용됩니다. |
3 | public static void fill(int[] a, int val) 지정된 int 유형 배열의 지정된 범위에 있는 각 요소에 지정된 int 값을 할당합니다. 다른 모든 기본 데이터 유형(Byte, short, Int 등)에도 동일한 접근 방식이 적용됩니다. |
4 | public static void sort(Object[] a) 지정된 객체 배열을 해당 요소의 자연 순서에 따라 오름차순으로 정렬합니다. 다른 모든 기본 데이터 유형(Byte, short, Int 등)에도 동일한 접근 방식이 적용됩니다. |