This is the second method for declaring, creating and initializing an array object in one line.
Primitive
double avg = 90.5; double[] studentAvgs = {70.0, 80.0, 75.6, avg, 98.0}; System.out.println("Array Length: " + studentAvgs.length);//prints 5
How this works?
- Declares a double array reference variable named studentAvgs;
- Creates a double array object in the memory with a length of five
- Size of an array is determined by the number of comma-separated elements between the curly braces.
- Initializes the array elements with the values 70.0, 80.0, 75.6, 90.5, 98.0
- Assigns the array object to array reference variable studentAvgs.
The above code is equivalent to the following code:
double avg = 90.5; double[] studentAvgs = new double[5]; studentAvgs[0] = 70.0; studentAvgs[1] = 80.0; studentAvgs[2] = 75.6; studentAvgs[3] = avg; studentAvgs[4] = 98.0;
The above method is useful because at the time you create an array you might not know the values that will be assigned to the array element.
Reference
package com.ibytecode.arrays; class Person { String name; public Person(String name) { this.name = name; } } public class ArrayMethod2 { public static void main(String[] args) { Person p1 = new Person("Kumar"); Person p2 = new Person("Dev"); Person[] persons = {p1, p2, new Person("Sri")}; } }
How many objects will be created in the memory?
- One Person [] array object referenced by persons
- Two Person object referenced by p1 and p2
- Onw Person object reference by persons[2].
So, totally four objects will be created.
Multidimensional
double[][] studentAvgs = {{80.0,90.0}, {75.5, 65.5, 85.5}, {98.0}};
studentAvgs[0] = an array of two doubles
studentAvgs[1] = an array of three doubles
studentAvgs[2] = an array of one doubles
studentAvgs[0] [0] = the double value 80.0
studentAvgs[1] [3] = the double value 85.5