

Join them; it only takes a minute:

Sign up
Join the Stack Overflow community to:
  1. Ask programming questions
  2. Answer and help your peers
  3. Get recognized for your expertise

Arrays are implemented as objects in java right? If so, where could I look at the source code for the array class. I am wondering if the length variable in arrays is defined as a constant and if so why it isn't in all capital letters LENGTH to make the code more understandable.

share|improve this question

closed as off-topic by JasonMArcher, Zach Saucier, durron597, Shankar Damodaran, gunr2171 Jul 16 '15 at 14:26



If it was a constant (as in a static final field), all arrays would have to have the same size (or arrays of different sizes would have to have different types (which would further imply that an array's size would have to be known at compile-time)). – sepp2k Feb 15 '10 at 17:47
From what I am understanding from Yishai's answer below is that the array is dynamically created when it is defined. – AFK Feb 15 '10 at 17:52
sepp2k's point is that there is no one global length field. Generally we think of upper case variables as public static and final. Here length is public and final, but not static, and it's value is different per object instance, although it never changes. – Yishai Feb 15 '10 at 18:29
Useful -… – Raúl Apr 10 '15 at 15:25
up vote 9 down vote accepted

Although arrays are Objects in the sense that they inherit java.lang.Object, the classes are created dynamically as a special feature of the language. They are not defined in source code.

Consider this array:

   MySpecialCustomObject[] array;

There is no source code for that. You created it in code dynamically.

The reason why length is in lower case and a field is really about the fact that the later Java coding standards didn't exist at the time this was developed. If an array was being developed today, it would probably be a method: getLength().

Length is a final field defined at object construction, it isn't a constant, so some coding standards would not want that to be in upper case. However in general in Java today everything is generally either done as a constant in upper case or marked private with a public getter method, even if it is final.

share|improve this answer
what is the general outline for an array class to be generated? – AFK Feb 15 '10 at 17:47
@sn3twork, Basically array has all of the methods of object, plus a public final length variable and it has a public clone method, implements Cloneable and Serializable (but I assume for legacy reasons not Iterable). Details are in the JLS: – Yishai Feb 15 '10 at 17:55
thanks for the link… I found where it talks about defining arrays using arrays initializers and creation expressions – AFK Feb 15 '10 at 18:02
Good answer. Even an array of primitives are Objects. – fastcodejava Feb 15 '10 at 18:12
