Java에서 length는 배열(array)의 인스턴스 변수이고, length()는 String 클래스의 메서드(method)라는 점에서 서로 다릅니다. 두 기능 모두 '길이'를 구한다는 공통점이 있지만, 적용 대상과 동작 방식이 다르기 때문에 정확한 이해가 필요합니다.
length — 배열의 길이를 구하는 변수
- 배열은 동일한 타입의 값을 고정된 개수만큼 저장하는 객체(object)입니다.
- 배열의 length 변수는 배열에 저장된 요소(element)의 개수, 즉 배열의 길이를 반환합니다.
- 배열은 한 번 초기화되면 크기를 변경할 수 없기 때문에, length 변수를 통해 직접 배열의 길이를 얻을 수 있습니다.
- length 변수는 오직 배열에만 사용할 수 있습니다.
예제 코드
public class ArrayLengthTest {
public static void main(String args[]) {
int array[] = {1, 2, 3, 4, 5, 6, 7};
System.out.println("Length of an array is: " + array.length);
}
}
실행 결과
Length of an array is: 7
length() — 문자열의 길이를 구하는 메서드
- length()는 String 클래스의 메서드로, 문자열 객체에 대해 호출하여 사용합니다.
- length() 메서드는 문자열 객체에 저장된 문자(character)의 개수를 반환합니다.
- 문자열은 다양한 연산을 통해 내용이 바뀔 수 있으므로, String 클래스는 고정된 변수 대신 메서드 형태로 길이를 제공합니다.
- 내부적으로 String 클래스는 외부에 노출하지 않는 char[] 배열을 사용하며, length()는 이 내부 배열의 크기를 기반으로 동작합니다.
예제 코드
public class StringLengthMethodTest {
public static void main(String args[]) {
String str = "Welcome to Tutorials Point";
System.out.println("Length of String using length() method is: " + str.length());
}
}
실행 결과
Length of String using length() method is: 26
length와 length() 비교 정리
| 구분 | length | length() |
|---|---|---|
| 적용 대상 | 배열(Array) | 문자열(String) |
| 형태 | 인스턴스 변수 | 메서드 |
| 반환 값 | 배열에 저장된 요소의 개수 | 문자열에 포함된 문자의 개수 |
| 특징 | 배열 생성 후 크기 고정 | 문자열 연산에 따라 결과가 달라질 수 있음 |
정리하면, 배열의 길이는 length 변수로, 문자열의 길이는 length() 메서드로 확인합니다. 배열은 생성 시 크기가 고정되므로 필드 접근만으로 충분하고, 반면 문자열은 내부의 char[] 배열을 외부에 노출하지 않은 채 메서드를 통해 길이를 제공하기 때문입니다. 이 차이를 이해하면 Java 코딩 시 혼동 없이 올바르게 길이를 다룰 수 있습니다.