Java에서 스트링의 length()와 배열의 length?

jiee의 이미지

정말 오랜만에 Java를 사용할 일이 있어서 사용중에 궁금한 것이 있어 이렇게 글을 올립니다.

Java에서 스트링의 크기는 length()라는 메소드로 표현하는 반면,
배열의 크기는 length라는 field로 나타냅니다.

도데체 왜 저렇게 두 개가 다른 형태로 크기를 나타내는지 궁금합니다.
(그 내면의 본질적인 이유가 더 궁금합니다.)

그럼, 다들 즐거운 하루되시길~~ : )

익명사용자의 이미지

Java에서 배열은 소위 말하는 first-class object가 아닙니다. 따라서 배열 자체에는 method가 있을 수 없습니다 - 그래서 배열은 length()로 만들 수가 없지요.
String의 경우 method length() 가 아니라 property length로 만들 수 도 있습니다만, 그런 경우에는 String class의 구현을 필요없이 제한하게 되므로 (length를 property로 갖지 않는 String class를 얼마든지 만들 수 있겠지요) legnth()는 method로 만들었다고 볼 수 있겠지요.

dormael의 이미지

그런 이유가 있었군요.

왜 length()인가 찾아 봤습니다.

CharSequence 인터페이스의 length()를 구현한거네요.

-- Signature --
青い空大好き。
蒼井ソラもっと好き。
파란 하늘 너무 좋아.
아오이 소라 더좋아.

narusas의 이미지

그 이전에는 java.lang.String은 java.lang.Object 만을 상속하는 클래스였죠.

그 것 말고는 먼저 분이 말씀하신게 맞습니다.