"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Java 배열 소개

Java 배열 소개

2024-11-07에 게시됨
검색:807

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 



배열 인쇄

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

for (int i = 0; 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 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  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 



역방향 함수 호출:

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

결론

배열은 Java의 중요한 데이터 구조로, 데이터 세트를 효율적으로 저장하고 조작할 수 있게 해줍니다. 배열은 크기가 고정되어 있지만 동종 데이터 유형을 처리할 때 강력하고 다재다능합니다. 동적 데이터 요구의 경우 ArrayList는 추가적인 유연성을 제공하여 임의의 크기 증가를 허용합니다. 이러한 구조와 작동을 이해하면 고급 프로그래밍 및 데이터 관리를 위한 토대가 마련됩니다. 또한 배열 작업을 연습하고 기본 메모리 관리를 이해하면 보다 효율적이고 최적화된 코드를 작성하는 데 도움이 됩니다.

릴리스 선언문 이 기사는 https://dev.to/bhaweshchaudhary/introduction-to-arrays-in-java-17gg?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]에 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3