배열.length, 문자열.length(), 리스트.size()

드코미·2025년 7월 21일
post-thumbnail

배열.length

int[] arr = {1, 2, 3};
System.out.println(arr.length); // 출력: 3

왜 괄호없이 사용할까?

length는 속성(field)이기 때문에 괄호 없이 사용합니다.

⚠️ 선언한 크기 그대로 나옴. 실제 채운 데이터 개수와는 다름.

아래에 나온 문자열, 리스트와 다르게 배열의 경우 실제 채운 데이터 개수가 아니라, 선언한 배열 크기가 반환됩니다.

따라서 다음과 같은 형식으로 구현을 해야지, null 포인터 에러가 발생하지 않습니다.

✔️ 배열 크기(length)만큼 무조건 순회하려고 하다가, 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 쓰는 것 같다.


문자열.length()

String s = "hello";
System.out.println(s.length());  // 출력: 5
  • length()는 String 클래스의 메서드입니다.
  • 내부적으로는 문자열 길이를 계산해서 반환합니다.

리스트.size()

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
  • null 걱정도 없고
  • size()도 실제 개수고
  • 순회도 직관적이다.
profile
할 수 있다!!!

0개의 댓글