답변:
그것들은 의미 상 동일합니다. 이 int array[]
구문은 C 프로그래머가 Java에 익숙해 지도록 돕기 위해 추가되었습니다.
int[] array
훨씬 바람직하고 혼란스럽지 않습니다.
int array[]
구문 이므로 구문이 사용됩니다. 또한 논리적으로 ... 꼬인 방식으로. :)
int array[]
나에게 더 의미가 있습니다. 이 선언에 대해 어떻게 생각하십니까? int[] x, y
? y
배열 인가 ? 아마 아닐 수도 있습니다. Java 전문가 만이 자신감있게 답변 할 수 있습니다.
int[] x, y
, y
(때문에 배열 []
유형에 속함), 그리고 경우에 int x[], y
, y
배열 (아니다 []
변수에 속한다).
아니요, 동일합니다. 하나
byte[] rowvector, colvector, matrix[];
다음과 같습니다.
byte rowvector[], colvector[], matrix[][];
Java 사양 에서 가져 왔습니다 . 그 의미는
int a[],b;
int[] a,b;
다르다. 이러한 여러 선언 중 하나를 권장하지 않습니다. 읽기 가장 쉬운 것은 다음과 같습니다.
int[] a;
int[] b;
Java 언어 사양의 10.2 섹션 에서 :
[]는 선언의 시작 부분에서 유형의 일부로, 또는이 예에서와 같이 특정 변수에 대한 선언자의 일부로 또는 둘 다로 나타날 수 있습니다.
byte[] rowvector, colvector, matrix[];
이 선언은 다음과 같습니다.
byte rowvector[], colvector[], matrix[][];
개인적으로 거의 모든필자가 본 Java 코드는 첫 번째 형식을 사용하는데, 이는 변수에 대한 모든 유형 정보를 한 곳에 보관함으로써 더 의미가 있습니다. 나는 두 번째 형태가 허용되지 않기를 바랍니다.
다행히 내가 한 생각하지 않는 지금 이 (유효) 코드를 볼 수 :
String[] rectangular[] = new String[10][10];
int[] a[];
-그것은 결코 명확하지 않을 것입니다 ;-)
두 명령은 같습니다.
구문을 사용하여 여러 객체를 선언 할 수 있습니다.
int[] arrayOne, arrayTwo; //both arrays
int arrayOne[], intOne; //one array one int
참조 : http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html
실제 차이는 없습니다. 하나,
double[] items = new double[10];
유형이 배열임을 분명히 나타내므로 선호됩니다.
둘 다 똑같이 유효합니다. 그러나 int puzzle[]
양식은 권장하지 않으며 코딩 규칙int[] puzzle
에 따라 선호됩니다 . 공식 Java 배열 튜토리얼 도 참조하십시오 .
마찬가지로 다른 유형의 배열을 선언 할 수 있습니다.
byte[] anArrayOfBytes; short[] anArrayOfShorts; long[] anArrayOfLongs; float[] anArrayOfFloats; double[] anArrayOfDoubles; boolean[] anArrayOfBooleans; char[] anArrayOfChars; String[] anArrayOfStrings;
배열 이름 뒤에 대괄호를 넣을 수도 있습니다.
float anArrayOfFloats[]; // this form is discouraged
그러나 협약은이 양식을 권장하지 않습니다. 대괄호는 배열 유형을 식별하며 유형 지정과 함께 나타나야합니다.
마지막 단락에 유의하십시오.
일부 타사 자습서가 아닌 공식 Sun / Oracle 자습서를 읽는 것이 좋습니다. 그렇지 않으면 나쁜 관행을 배우는 위험에 처하게됩니다.
대체 형식으로 빌린 것입니다. C
java가 기반 입니다.
호기심 으로 Java에서 유효한 메소드 를 정의하는 세 가지 방법 이 있습니다 main
.
public static void main(String[] args)
public static void main(String args[])
public static void main(String... args)
public static void main ( String \u005B \u005D args )
.
String... param
, 인 배열
, then why it is not possible to call a method like say
`하나가 정의되면 것으로 someMethod (1, 2) someMethod
로 someMethod ( int[] numbers )
. 배열은 인수가 인접한 메모리 위치에서 가져와야하지만 varargs
, 제공된 인수에서 먼저 배열을 만들어야합니다. 또한 varargs
배열의 경우도 같지 않지만 메소드의 최종 인수 만 될 수 있습니다.
meth(int... a)
할 수 있습니다. 즉 meth(1, 2)
or 또는 으로 호출 할 수 있습니다 meth(new int[] {1, 2})
. Varargs는 첫 번째 버전을 두 번째 버전으로 바꾸는 구문 설탕입니다. 매개 변수의 실제 (바이트 코드) 유형은 배열 유형입니다. 마지막으로 생각하면, 다른 확실한 선택은 없습니다.
Java 언어 사양은 말합니다 :
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[][];
따라서 그들은 정확히 같은 바이트 코드를 얻을 것입니다.
둘 다 같은 의미입니다. 그러나 이러한 변형이 있으면 다음과 같은 이점도 있습니다.
int[] a, b[];
이는 다음과 같습니다.
int[] a;
int[][] b;
그러나 이것은 끔찍한 코딩 스타일이므로 절대로 수행해서는 안됩니다.
이미 언급했듯이 큰 차이는 없습니다 (한 줄에 하나의 변수 만 선언하면).
참고 SonarQube가 미성년자의로 두 번째 경우를 처리하는 코드 냄새 :
배열 지정자 "[]"는 변수가 아닌 유형에 있어야합니다 (오징어 : S1197)
더 나은 코드 가독성을 위해 배열 지정자는 항상 유형에 있어야합니다. 그렇지 않으면 개발자는 변수가 배열인지 여부를 알기 위해 유형과 변수 이름을 모두 봐야합니다.
비준수 코드 예
int matrix[][]; // Noncompliant int[] matrix[]; // Noncompliant
준수 솔루션
int[][] matrix; // Compliant
그렇습니다. 개인적으로 선호합니다
int[] integers;
코드를 읽는 사람에게는 정수가 정수의 배열이라는 것을 즉시 알 수 있기 때문입니다.
int integers[];
한 줄에 여러 개의 선언이있는 경우 특히 명확하지 않습니다. 그러나 다시 말하지만, 그것들은 동등하므로 개인적 취향에 달려 있습니다.
자세한 내용은 Java 배열에서이 페이지를 확인하십시오 .
단일 배열 참조를 선언 할 때 그 사이에는 큰 차이가 없습니다. 따라서 다음 두 선언은 동일합니다.
int a[]; // comfortable to programmers who migrated from C/C++
int[] a; // standard java notation
여러 개의 배열 참조를 선언 할 때 그 사이의 차이점을 찾을 수 있습니다. 다음 두 문장은 같은 의미입니다. 실제로, 그것은 따르는 프로그래머에 달려 있습니다. 그러나 표준 Java 표기법이 권장됩니다.
int a[],b[],c[]; // three array references
int[] a,b,c; // three array references