Java에서 크기와 길이의 차이점

Mohammad Irfan 2023년10월12일
  1. Java 배열의 length 속성
  2. Java 배열의 .length
  3. Java 배열의 size() 메서드 예
  4. Java에서 length() 메소드를 사용하여 길이 찾기
  5. Java 컬렉션 size() 메서드
  6. Java에서 크기와 길이의 차이점
Java에서 크기와 길이의 차이점

이 튜토리얼은 Java에서 크기와 길이의 차이를 소개합니다. 또한 주제를 이해하는 데 도움이 되는 몇 가지 예제 코드를 나열했습니다.

Java에는 size() 메소드와 length 속성이 있습니다. 초보자는 이것들이 서로 바꿔 사용할 수 있다고 생각할 수 있으며 소리가 다소 비슷하기 때문에 동일한 작업을 수행할 수 있습니다. Java에서 크기와 길이는 서로 다른 두 가지입니다. 여기에서 우리는 둘의 차이점을 배울 것입니다.

Java 배열의 length 속성

배열은 정렬된 방식으로 동일한 유형의 고정된 수의 데이터를 저장합니다. Java의 모든 배열에는 해당 배열의 요소에 할당된 공간을 저장하는 길이 필드가 있습니다. 어레이의 최대 용량을 찾는 데 사용되는 상수 값입니다.

  • 이 필드는 배열에 있는 요소의 수가 아니라 저장할 수 있는 요소의 최대 수를 알려줍니다(요소의 존재 여부에 관계없이).

Java 배열의 .length

아래 코드에서는 먼저 7 길이의 배열을 초기화합니다. 이 배열의 길이 필드는 요소를 추가하지 않았음에도 7을 표시합니다. 이 7은 최대 용량을 나타냅니다.

public class Main {
  public static void main(String[] args) {
    int[] intArr = new int[7];
    System.out.print("Length of the Array is: " + intArr.length);
  }
}

출력:

Length of the Array is: 7

이제 인덱스를 사용하여 배열에 3개의 요소를 추가한 다음 길이 필드를 인쇄해 보겠습니다. 여전히 7을 보여줍니다.

public class Main {
  public static void main(String[] args) {
    int[] intArr = new int[7];
    intArr[0] = 20;
    intArr[1] = 25;
    intArr[2] = 30;
    System.out.print("Length of the Array is: " + intArr.length);
  }
}

출력:

Length of the Array is: 7

배열의 크기가 고정되어 있으므로 길이 필드는 일정합니다. 초기화하는 동안 배열에 저장할 최대 요소 수(배열의 용량)를 정의해야 하며 이 제한을 초과할 수 없습니다.

Java 배열의 size() 메서드 예

배열에는 size() 메서드가 없습니다. 컴파일 오류를 반환합니다. 아래 예를 참조하십시오.

public class SimpleTesting {
  public static void main(String[] args) {
    int[] intArr = new int[7];
    System.out.print("Length of the Array is: " + intArr.size());
  }
}

출력:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Cannot invoke size() on the array type int[]

	at SimpleTesting.main(SimpleTesting.java:7)

Java에서 length() 메소드를 사용하여 길이 찾기

Java 문자열은 단순히 순서가 지정된 문자 모음이며, 배열과 달리 length() 메서드가 있고 length 필드가 없습니다. 이 메서드는 문자열에 있는 문자 수를 반환합니다.

아래 예를 참조하십시오.

public class Main {
  public static void main(String[] args) {
    String str1 = "This is a string";
    String str2 = "Another String";
    System.out.println("The String is: " + str1);
    System.out.println("The length of the string is: " + str1.length());
    System.out.println("\nThe String is: " + str2);
    System.out.println("The length of the string is: " + str2.length());
  }
}

출력:

The String is: This is a string
The length of the string is: 16

The String is: Another String
The length of the string is: 14

문자열에는 length 속성을 사용할 수 없으며 length() 메서드는 배열에 적용할 수 없습니다. 다음 코드는 잘못 사용하는 경우의 오류를 보여줍니다.

public class SimpleTesting {
  public static void main(String[] args) {
    String str1 = "This is a string";
    System.out.println("The length of the string is: " + str1.length);
  }
}

출력:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	length cannot be resolved or is not a field

	at SimpleTesting.main(SimpleTesting.java:7)

마찬가지로 배열에서는 length() 메서드를 사용할 수 없습니다.

public class SimpleTesting {
  public static void main(String[] args) {
    int[] intArray = {1, 2, 3};
    System.out.println("The length of the string is: " + intArray.length());
  }
}

출력:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Cannot invoke length() on the array type int[]

	at SimpleTesting.main(SimpleTesting.java:7)

Java 컬렉션 size() 메서드

size()java.util.Collections 클래스의 메소드입니다. ‘Collections’ 클래스는 ‘ArrayList’, ‘LinkedList’, ‘HashSet’, ‘HashMap’과 같은 다양한 컬렉션(또는 데이터 구조)에서 사용됩니다.

size() 메소드는 컬렉션에 현재 존재하는 요소의 수를 반환합니다. 배열의 length 속성과 달리 size() 메서드가 반환하는 값은 일정하지 않고 요소 수에 따라 변경됩니다.

Java의 Collection Framework의 모든 컬렉션은 동적으로 할당되므로 요소 수가 다를 수 있습니다. size() 메소드는 요소 수를 추적하는 데 사용됩니다.

아래 코드에서 요소가 없는 새 ArrayList를 만들 때 size() 메서드는 0을 반환한다는 것이 분명합니다.

import java.util.ArrayList;
import java.util.List;
public class Main {
  public static void main(String[] args) {
    List<Integer> list = new ArrayList<Integer>();
    System.out.println("The ArrayList is: " + list);
    System.out.println("The size of the ArrayList is: " + list.size());
  }
}

출력:

The ArrayList is: []
The size of the ArrayList is: 0

그러나 이 값은 요소를 추가하거나 제거할 때 변경됩니다. 3개의 요소를 추가하면 크기가 3으로 증가합니다. 다음으로 2개의 요소를 제거하고 목록의 크기는 1이 됩니다.

import java.util.ArrayList;
import java.util.List;
public class Main {
  public static void main(String[] args) {
    List<Integer> list = new ArrayList<Integer>();
    System.out.println("The ArrayList is: " + list);
    System.out.println("The size of the ArrayList is: " + list.size());
    list.add(20);
    list.add(40);
    list.add(60);
    System.out.println("\nAfter adding three new elements:");
    System.out.println("The ArrayList is: " + list);
    System.out.println("The size of the ArrayList is: " + list.size());
    list.remove(0);
    list.remove(1);
    System.out.println("\nAfter removing two elements:");
    System.out.println("The ArrayList is: " + list);
    System.out.println("The size of the ArrayList is: " + list.size());
  }
}

출력:

The ArrayList is: []
The size of the ArrayList is: 0

After adding three new elements:
The ArrayList is: [20, 40, 60]
The size of the ArrayList is: 3

After removing two elements:
The ArrayList is: [40]
The size of the ArrayList is: 1

Java에서 크기와 길이의 차이점

크기와 길이는 때때로 같은 컨텍스트에서 사용될 수 있지만 Java에서는 완전히 다른 의미를 갖습니다.

어레이의 length 필드는 어레이의 최대 용량을 나타내는 데 사용됩니다. 최대 용량이란 그 안에 저장할 수 있는 최대 요소 수를 의미합니다. 이 필드는 배열에 있는 요소의 수를 고려하지 않고 일정하게 유지됩니다.

문자열의 length() 메서드는 문자열에 있는 문자 수를 나타내는 데 사용됩니다. Collections Frameworksize() 메서드는 해당 컬렉션에 현재 존재하는 요소의 수를 보는 데 사용됩니다. Collections는 동적 크기를 가지므로 size()의 반환 값은 다를 수 있습니다.