
int[] arr = {1, 2, 3};
System.out.println(arr.length); // 출력: 3
왜 괄호없이 사용할까?
length는 속성(field)이기 때문에 괄호 없이 사용합니다.
⚠️ 선언한 크기 그대로 나옴. 실제 채운 데이터 개수와는 다름.
아래에 나온 문자열, 리스트와 다르게 배열의 경우 실제 채운 데이터 개수가 아니라, 선언한 배열 크기가 반환됩니다.
따라서 다음과 같은 형식으로 구현을 해야지, null 포인터 에러가 발생하지 않습니다.
public class ArraySizeExample {
public static void main(String[] args) {
// 배열 선언 (크기 100)
String[] names = new String[100];
// 배열에 값 3개만 넣음
names[0] = "Alice";
names[1] = "Bob";
names[2] = "Charlie";
System.out.println("배열의 길이: " + names.length); // 100 출력
// 배열 순회
for (int i = 0; i < names.length; i++) {
if (names[i] == null) break; // null 만나면 그만 출력
System.out.println("이름: " + names[i]);
}
}
}
근데 이 방식보다는,
public class ArraySizeExample {
public static void main(String[] args) {
String[] names = new String[100];
int size = 0; // 실제 데이터 개수를 추적
// 데이터 넣기
names[size++] = "Alice";
names[size++] = "Bob";
names[size++] = "Charlie";
System.out.println("배열의 실제 데이터 개수: " + size); // 3
// 진짜 데이터만 순회
for (int i = 0; i < size; i++) {
System.out.println("이름: " + names[i]);
}
}
}
이렇게 하면 더 나은듯하다.
이게 너무 불편해서 ArrayList 쓰는 것 같다.
String s = "hello";
System.out.println(s.length()); // 출력: 5
length()는 String 클래스의 메서드입니다.ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
System.out.println(list.size()); // 출력: 2
ArrayList<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");
System.out.println("데이터 개수: " + names.size());
for (String name : names) {
System.out.println("이름: " + name);
}
// 출력
데이터 개수: 3
이름: Alice
이름: Bob
이름: Charlie