Home >Java >javaTutorial >What Does \'[Ljava.lang.Object;\' Mean in Java Array Type Encoding?
Understanding the Object Array Type Encoding
When retrieving an object from a function call and printing its string representation, you may encounter a puzzling notation like "[Ljava.lang.Object;". This enigmatic expression represents the class type of the object, but how do we decipher its cryptic format?
The class type encoding scheme is elegantly detailed in Class.getName(): for reference types (excluding arrays), the binary name is returned. Primitive types and void are assigned their Java keywords. However, for arrays, their encoding takes a unique form.
Array Encoding: Breaking Down [ Ljava.lang.Object; ]
"Ljava.lang.Object;" is the notation for the Java class representing an array of Objects, also known as Object[].class. The naming pattern follows the following rules:
Understanding the Encoding Notation
The format is as follows:
Element Type Encoding
boolean Z
byte B
char C
double D
float F
int I
long J
short S
class or interface Lclassname;
Example Decodings
For illustration, consider these examples:
Why Arrays Override toString()
Contrary to expectation, the toString() method for arrays deviates from the Object class's implementation. It returns a string in the aforementioned format because arrays do not override this method. Thus, the method inherited from Object, specified as follows, is invoked:
String.class returns a string in the format: getClass().getName() '@' Integer.toHexString(hashCode())
Alternative Array String Representation
The java.util.Arrays class offers more user-friendly string representations for arrays:
Additional Useful Resources
The above is the detailed content of What Does \'[Ljava.lang.Object;\' Mean in Java Array Type Encoding?. For more information, please follow other related articles on the PHP Chinese website!