Is there any difference between “Object[] x” and “Object x[]”?

前端 未结 5 1930
时光说笑
时光说笑 2020-12-03 22:17

I was updating a legacy code base in Java and I found a line like this:

Object arg[] = { new Integer(20), new Integer(22) };

That line catc

相关标签:
5条回答
  • 2020-12-03 22:57

    Both are legal and both work. But placing [] before the array's name is recommended.

    From Javadocs:

    You can also place the square brackets after the array's name:

    float anArrayOfFloats[]; // this form is discouraged
    

    However, convention discourages this form; the brackets identify the array type and should appear with the type designation.

    0 讨论(0)
  • 2020-12-03 22:57

    Another good reason to write Integer[] ints instead of Integer ints[] is because of inheritance relations: Integer[] is subtype of Number[] is subtype of Object[].

    In other words, you can put Integers in an Object array, so you can think of the [] as part of the object's type definition -- which is why it makes sense to have it close to the type instead of the object name.

    0 讨论(0)
  • 2020-12-03 23:09

    There is no difference. Both are legal.

    You can read in Java Language Specification http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html

    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[];
    
    0 讨论(0)
  • 2020-12-03 23:17

    No, they both work. But watch out:

    float anArrayOfFloats[], aSecondVariable;
    

    will declare one array of floats and one float, while:

    float[] anArrayOfFloats, aSecondVariable;
    

    will declare two arrays of floats.

    0 讨论(0)
  • 2020-12-03 23:18

    Short answer: No.

    0 讨论(0)
提交回复
热议问题