Java: int[] array vs int array[]

JavaArraysPerformanceDefinition

Java Problem Overview


Is there a difference between

int[] array = new int[10];

and

int array[] = new int[10];

?

Both do work, and the result is exactly the same. Which one is quicker or better? Is there a style guide which recommends one?

Java Solutions


Solution 1 - Java

Both are equivalent. Take a look at the following:

int[] array;

// is equivalent to

int array[];

int var, array[];

// is equivalent to

int var;
int[] array;

int[] array1, array2[];

// is equivalent to

int[] array1;
int[][] array2;

public static int[] getArray()
{
    // ..
}

// is equivalent to

public static int getArray()[]
{
    // ..
}

Solution 2 - Java

From JLS http://docs.oracle.com/javase/specs/jls/se5.0/html/arrays.html#10.2

Here are examples of declarations of array variables that do not create arrays:

int[ ] ai;			// array of int
short[ ][ ] as;			// array of array of short
Object[ ]	ao,		// array of Object
		otherAo;	// array of Object
Collection<?>[ ] ca;		// array of Collection of unknown type
short		s,		// scalar short 
		aas[ ][ ];	// array of array of short

Here are some examples of declarations of array variables that create array objects:

Exception ae[ ] = new Exception[3]; 
Object aao[ ][ ] = new Exception[2][3];
int[ ] factorial = { 1, 1, 2, 6, 24, 120, 720, 5040 };
char ac[ ] = { 'n', 'o', 't', ' ', 'a', ' ',
				 'S', 't', 'r', 'i', 'n', 'g' }; 
String[ ] aas = { "array", "of", "String", };

The [ ] may appear as part of the type at the beginning of the declaration, or as part of the declarator for a particular variable, or both, as in this example:

byte[ ] rowvector, colvector, matrix[ ];

This declaration is equivalent to:

byte rowvector[ ], colvector[ ], matrix[ ][ ];

Solution 3 - Java

They are both basically same, there is no difference in performance of any sort, the recommended one however is the first case as it is more readable.

int[] array = new int[10];

FROM JLS:

> The [] may appear as part of the type at the beginning of the > declaration, or as part of the declarator for a particular variable, > or both.

Solution 4 - Java

Both are the same. I usually use int[] array = new int[10];, because of better (contiguous) readability of the type int[].

Solution 5 - Java

No, there is no difference. But I prefer using int[] array as it is more readable.

Solution 6 - Java

There is no difference between these two declarations, and both have the same performance.

Solution 7 - Java

There is virtually no difference.

Solution 8 - Java

In both examples, you are assigning a new int[10] to a reference variable.

Assigning to a reference variable either way will be equal in performance.

int[] array = new int[10];

The notation above is considered best practice for readability.

Cheers

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionxuma202View Question on Stackoverflow
Solution 1 - JavaEng.FouadView Answer on Stackoverflow
Solution 2 - JavaShashiView Answer on Stackoverflow
Solution 3 - JavaPermGenErrorView Answer on Stackoverflow
Solution 4 - JavaSamView Answer on Stackoverflow
Solution 5 - JavaHarinderView Answer on Stackoverflow
Solution 6 - Javasumit sharmaView Answer on Stackoverflow
Solution 7 - JavaIvaylo StrandjevView Answer on Stackoverflow
Solution 8 - JavaDennis JaamannView Answer on Stackoverflow