This is a special syntax allowed by
Java.
String [] array = { "A", "B", "C" };
is really the same as:
String [] array = new String[] { "A", "B", "C" };
If you think about it, most of the time, when we create an array, its instance type (here String[]) is the same as the reference type (also String[]). So this is a "shortened syntax".
So, although the syntax doesn't EXPLICITLY show it, there is a String array being instantiated and put on the heap. The String objects, because they are not created with the new operator, will be put in the String literal pool. But they also wil be instantiated (not on the heap, rather in the literal pool). The char[] arrays for these literal strings are also put on the heap.
For more on this topic, read:
About Strings [ July 28, 2006: Message edited by: Douglas Chorpita ]