length and length() in Java
arrays, java, string
Solution
Let me first highlight three different ways for similar purpose.
`length` -- arrays (`int[]`, `double[]`, `String[]`) -- to know the length of the arrays
`length()` -- String related Object (`String`, `StringBuilder`, etc) -- to know the length of the String
`size()` -- Collection Object (`ArrayList`, `Set`, etc) -- to know the size of the Collection
Now forget about `length()` consider just `length` and `size()`.
`length` is not a method, so it completely makes sense that it will not work on objects. It only works on arrays. `size()` its name describes it better and as it is a method, it will be used in the case of those objects who work with collection (collection frameworks) as I said up there.
Now come to `length()`: String is not a primitive array (so we can't use `.length`) and also not a Collection (so we cant use `.size()`) that's why we also need a different one which is `length()` (keep the differences and serve the purpose).
As answer to Why? I find it useful, easy to remember and use and friendly.
Problem
Why do we have the length of an array as an attribute, `array.length`, and for String we have a method, `str.length()`? Is there some reason?