[Java] length, length(), size()

정지은·2022년 12월 19일
0

스프링(+자바)

목록 보기
5/5

java를 통해 코드를 작성하다 보면, 원하는 길이를 반환해야 할 때에 다양한 메소드가 존재한다는 것을 알 수 있다. 문제가 있다면 각 상황에 맞는 메소드를 사용하지 않으면 오류가 발생한다는 점이다.
어떤 상황에서 무엇을 사용해야 하고, 왜 그 차이가 발생하는 것인지 정리해 보았다.

Table

용어데이터 타입
length배열
length()문자열
size()ArrayList 등

size()는 가장 대표적으로 ArrayList에 사용하지만, 보편적으로는 컬렉션 프레임워크 타입(java.util.Collection)의 길이를 잴 때에 사용된다.

length와 size의 차이

표를 비교해 보면, length를 쓰는 데이터타입과 size를 쓰는 데이터타입의 차이점을 짐작할 수 있다.
배열과 문자열은 생성 후 변경 불가능한 객체immutable object이고, ArrayList는 변경이 가능한 객체인 것이다.

문자열은 바꿀 수 있지 않나?
java는 객체 지향 프로그램으로, OOP에서는 한 번 할당하면 내부 데이터를 변경할 수 없는 불변객체(immutable object)가 존재한다고 한다. String, Boolean, Integer, Float, Long등이 존재하며, 이들은 재할당은 가능하지만 내부 데이터를 변경하는 행위는 불가능하다.

size()java.util.Collection 표준 라이브러리의 모든 데이터 구조에서 상속한다. 즉, 해당 라이브러리의 메소드들은 size()를 지원한다.

length와 length()의 차이

그렇다면 같은 length에서, 왜 한 쪽은 괄호()가 붙은 것일까?
왜냐하면 한 쪽은 상수이고, 한 쪽은 메소드이기 때문이다. 맨 위의 테이블을 작성할 때에 메소드라고 적지 않은 이유를 여기서 알 수 있다.

length는 상수로, 배열이 선언될 때 최초의 길이를 저장하고 있다. 현재 배열에 저장한 요소 수가 아닌, 선언한 길이를 담고 있는 것이다. 모든 배열은 해당 상수를 필드로 가지고 있다.

length()는 메소드로, String에서 호출되면 해당하는 문자 수를 리턴한다. 문자열은 열의 크기와 문자의 수가 동일하다.

참고 사이트

https://stackoverflow.com/questions/20192843/difference-between-size-and-length-methods

https://ko.wikipedia.org/wiki/%EB%B6%88%EB%B3%80%EA%B0%9D%EC%B2%B4

profile
Steady!

0개의 댓글