>  기사  >  Java  >  Java 배열 소개

Java 배열 소개

Susan Sarandon
Susan Sarandon원래의
2024-10-09 10:11:02768검색

Introduction to Arrays in Java

프로그래밍에는 대규모 데이터 세트를 관리하고 조작하는 작업이 포함되는 경우가 많으므로 효율적이고 효과적인 데이터 구조가 중요합니다. 배열은 컴퓨터 과학의 기본 데이터 구조이며 동일한 유형의 고정 크기 시퀀스 요소를 저장하는 수단을 제공합니다. 이 블로그에서는 Java 배열의 정의, 구문, 작동 방법, 메모리 관리 등을 통해 Java 배열에 대해 심층적으로 살펴보겠습니다.

어레이가 필요한 이유는 무엇입니까?

Java에서 변수를 사용할 때 다음과 같이 각 변수를 개별적으로 선언하고 초기화할 수 있습니다.

java
int a = 19;
String name = "John Doe";

그러나 동일한 유형의 여러 값을 처리해야 하는 경우 이 접근 방식은 비효율적입니다. 예를 들어 여러 개의 롤 번호나 이름을 저장하려는 경우 각 값을 하드 코딩하는 것은 실용적이지 않습니다. 배열은 값 모음을 효율적으로 저장할 수 있어 유용합니다. 예를 들어 5개의 롤 번호를 저장해야 하는 경우 배열을 활용할 수 있습니다.

배열이란 무엇입니까?

배열은 기본적으로 동일한 유형의 데이터 항목 모음입니다. 배열은 객체뿐만 아니라 정수, 부동 소수점, 문자와 같은 기본 데이터 유형을 저장할 수 있습니다. 예:

int[] rollNumbers = new int[5];
String[] names = {"Alice", "Bob", "Charlie"};

배열 구문

Java에서 배열을 선언하는 구문은 간단합니다.

dataType[] arrayName = new dataType[size];

예를 들어 5개의 정수 배열을 생성하려면 다음을 수행하세요.

int[] rollNumbers = new int[5];

또는 한 줄로 배열을 선언하고 초기화할 수도 있습니다.

int[] rollNumbers = {23, 55, 9, 18, 45};

배열의 특성

동종 요소

배열에서 모든 요소는 동일한 유형이어야 합니다. 단일 배열 내에서 유형을 혼합할 수 없습니다. 예를 들면 다음과 같습니다.

int[] nums = {1, 2, "three"}; // Will cause a compile-time error

고정 크기

배열이 생성되면 크기가 고정됩니다. 크기를 확장하거나 축소할 수 없습니다. 이러한 제약으로 인해 보다 동적인 데이터 요구 사항을 충족하기 위해 ArrayList와 같은 다른 데이터 구조를 선택하게 되는 경우가 많습니다.

내부 메모리 관리

Java의 배열은 다음으로 구성됩니다.

  • 스택 메모리: 배열의 참조 변수를 저장합니다.
  • 힙 메모리: 실제 배열 객체와 해당 요소를 저장합니다.

배열을 선언하면 스택 메모리에 참조가 생성되고, 힙 메모리에 배열 객체가 저장됩니다.

메모리 할당

배열의 메모리 할당에는 두 가지 중요한 단계가 있습니다.

  1. 선언: 참조 변수가 생성되었지만 아무 곳도 가리키지 않습니다.
  2. 초기화: 참조 변수는 요소가 포함된 힙의 실제 배열 개체를 가리킵니다.

예:

int[] rollNumbers; // Declaration
rollNumbers = new int[5]; // Initialization

동적 메모리 할당

Java는 동적 메모리 할당을 수행합니다. 즉, 런타임 시 필요에 따라 메모리를 할당하므로 메모리 관리가 효율적입니다.

배열의 입력과 출력

입력 받기

사용자 입력으로 배열을 채우려면 콘솔에서 입력을 읽는 스캐너와 함께 루프를 사용할 수 있습니다.

Scanner scanner = new Scanner(System.in);
int[] arr = new int[5];
for (int i = 0; i < arr.length; i++) {
    System.out.print("Enter element " + (i + 1) + ": ");
    arr[i] = scanner.nextInt();
}

배열 인쇄

더 읽기 쉬운 출력을 위해 루프나 Arrays.toString() 유틸리티 메소드를 사용하여 배열을 인쇄할 수 있습니다.

for (int i = 0; i < arr.length; i++) {
    System.out.print(arr[i] + " ");
}

또는

System.out.println(Arrays.toString(arr));

다차원 배열

2차원 배열, 즉 행렬은 배열의 배열입니다. 2D 배열의 구문은 다음과 같습니다.

int[][] matrix = new int[3][3];

int[][] matrix = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

2D 배열에 요소를 동적으로 입력하려면 중첩 루프가 사용됩니다.

ArrayList: 동적 대안

Java의 배열은 크기가 고정되어 있어 컴파일 시 요소 수를 알 수 없으면 비효율성이 발생합니다. 이러한 제한은 Java 컬렉션 프레임워크의 일부인 ArrayList 클래스를 사용하여 극복할 수 있습니다.

ArrayList 사용

ArrayList 클래스는 동적 크기 조정을 제공합니다. ArrayList를 생성하는 구문은 다음과 같습니다.

ArrayList<Integer> numbers = new ArrayList<>();

요소를 동적으로 추가하고 조작할 수 있습니다.

numbers.add(1);
numbers.add(2);
numbers.add(3);
System.out.println(numbers); // Output: [1, 2, 3]

numbers.set(1, 10); // Change element at index 1
System.out.println(numbers); // Output: [1, 10, 3]

numbers.remove(0); // Remove element at index 0
System.out.println(numbers); // Output: [10, 3]

boolean contains = numbers.contains(10); // Check if the list contains 10
System.out.println(contains); // Output: true

ArrayList의 내부 작업

내부적으로 ArrayList는 초기 고정 용량을 갖는 동적 배열을 사용합니다. 이 용량이 소진되면 더 큰 용량의 새 어레이가 생성되고 기존 요소가 복사됩니다. 이 프로세스를 통해 요소가 추가됨에 따라 ArrayList가 동적으로 커질 수 있습니다.

일반적인 어레이 작업

최대 요소 찾기

배열에서 최대 요소를 찾으려면 배열을 반복하고 가장 높은 값을 추적하세요.

int max = arr[0];
for (int i = 1; i < arr.length; i++) {
    if (arr[i] > max) {
        max = arr[i];
    }
}
System.out.println("Maximum value: " + max);

배열 반전

배열을 뒤집으려면 두 포인터 기술을 사용하세요.

public static void reverse(int[] arr) {
    int start = 0;
    int end = arr.length - 1;
    while (start < end) {
        int temp = arr[start];
        arr[start] = arr[end];
        arr[end] = temp;
        start++;
        end--;
    }
}

Calling the reverse function:

int[] arr = {1, 2, 3, 4, 5};
reverse(arr);
System.out.println(Arrays.toString(arr)); // Output: [5, 4, 3, 2, 1]

Conclusion

Arrays are a critical data structure in Java, enabling the storage and manipulation of data sets efficiently. While fixed in size, arrays are powerful and versatile when dealing with homogeneous data types. For dynamic data needs, ArrayList provides additional flexibility, allowing arbitrary growth in size. Understanding these structures and their operations lays the groundwork for more advanced programming and data management. Moreover, practicing array operations and understanding their underlying memory management helps in writing more efficient and optimized code.

위 내용은 Java 배열 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.