what is Ljava.lang.String;@
I have a string array selectCancel
with setter and getter methods, which is a checkbox in my form. I am trying to get the checked values and I am getting the above result when I print.
I tried the Arrays.toString()
method but it still prints the same.
I then did the following:
String checked = Arrays.toString(Employee.getSelectCancel());
I also tried with the Arrays.asList()
and Arrays.copyOf()
So, how do I read this string?
The method works if you provide an array. The output of
String[] helloWorld = {"Hello", "World"};
System.out.println(helloWorld);
System.out.println(Arrays.toString(helloWorld));
is
[Ljava.lang.String;@45a877
[Hello, World]
(the number after @
is almost always different)
Please tell us the return type of Employee.getSelectCancel()
Ljava.lang.String;@
is returned where you used string arrays as strings. Employee.getSelectCancel()
does not seem to return a String[]
According to the Java Virtual Machine Specification (Java SE 8), JVM §4.3.2. Field Descriptors:
FieldType term | Type | Interpretation -------------- | --------- | -------------- L ClassName ; | reference | an instance of class ClassName [ | reference | one array dimension ... | ... | ...
the expression [Ljava.lang.String;@45a877
means this is an array ( [
) of class java.lang.String ( Ljava.lang.String;
). And @45a877
is the address where the String object is stored in memory.
[
stands for single dimension array Ljava.lang.String
stands for the string class (L followed by class/interface name)
Few Examples:
-
Class.forName("[D")
-> Array of primitive double -
Class.forName("[[Ljava.lang.String")
-> Two dimensional array of strings.
List of notations:
Element Type : Notation
boolean : Z
byte : B
char : C
class or interface : Lclassname
double : D
float : F
int : I
long : J
short : S