Why is it that this works:
int[] array = {1, 2, 3};
but this doesn't:
int[] array;
array = {1, 2, 3};
If I have an array instance variable and I want to initialize it in my constructor surely I don't have to go
array = new int[3];
array[0] = 1;
array[1] = 2;
array[2] = 3;
I feel like I'm missing something here?
The literal syntax i.e. {}
can only be used when initializing during declaration.
Elsewhere you can do the following instead:
int[] array;
array = new int[] {1, 2, 3};
The {...}
construct here is called an array initializer in Java. It is a special shorthand that is only available in certain grammatical constructs:
JLS 10.6 Array Initializers
An array initializer may be specified in a declaration, or as part of an array creation expression, creating an array and providing some initial values. [...] An array initializer is written as a comma-separated list of expressions, enclosed by braces
"{"
and"}"
.
As specified, you can only use this shorthand either in the declaration or in an array creation expression.
int[] nums = { 1, 2, 3 }; // declaration
nums = new int[] { 4, 5, 6 }; // array creation
This is why the following does not compile:
// DOES NOT COMPILE!!!
nums = { 1, 2, 3 };
// neither declaration nor array creation,
// array initializer syntax not available
Also note that:
Here's an example:
int[][] triangle = {
{ 1, },
{ 2, 3, },
{ 4, 5, 6, },
};
for (int[] row : triangle) {
for (int num : row) {
System.out.print(num + " ");
}
System.out.println();
}
The above prints:
1
2 3
4 5 6
java.util.Arrays
- has many array-related utility methods like equals
, toString
, etcIf you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With