자바에서 길이를 반환할 때 사용하는 메서드 또는 프로퍼티로 length
, length()
그리고 size()
가 있다. 이것들의 차이를 제대로 이해하지 못한 상태에서 사용하다보니 Intelli J같은 IDE에서야 실수할 일이 없지만, vi 에디터로 코딩할 때엔 어떤걸 써야할지 헷갈리곤 한다. 그래서 정리하고자 이번 포스트를 작성하게 되었다.
일단 용도를 구분하면 다음과 같다.
함수 | 길이를 반환하는 데이터 타입 |
---|---|
length |
배열 |
length() |
문자열 (String Object) |
size() |
컬렉션 프레임워크 타입 (ArrayList, ..) |
스택오버플로우에서 찾은 답변이 좋을 것 같아서 여기에 정리한다.
배열과 문자열은 immutable한 특징을 갖는다. 그리고 모든 최상위 Collection의 하위 클래스는 mutable한 특징을 갖는다. 그래서 “length” 라는 것을 봤다면, 그건 constant(=immutable) 변수일 것이다. 이와 반대일 때 “size”를 볼 수 있다.
출처 : Stackoverflow
가장 많이 vote된 답변을 해석했는데, 눈여겨볼 점은 immutable한 특징이 될 것 같다. 영어로 “변경될 수 없다.”라는 뜻인데, 배열이 더 이상 변경되지 않는다는 점은 알겠는데 문자열이 변경되지 않는다고? 그래서 또 구글링을 해봤다..
Immutable Object란 생성후 변경불가능한 객체를 의미한다고 한다. 대표적인 Immutable 클래스로는 String
, Boolean
, Integer
, Float
, Long
등이 있다.
출처 :