문제

나는 최근에 배열을 정의하는 두 가지 방법의 차이점에 대해 생각하고 있습니다.

  1. int[] array
  2. int array[]

차이가 있습니까?

도움이 되었습니까?

해결책

그들은 의미 적으로 동일합니다. 그만큼 int array[] 구문은 C 프로그래머가 Java에 익숙해 지도록 돕기 위해 추가되었습니다.

int[] array 훨씬 바람직하고 덜 혼란 스럽습니다.

다른 팁

동일한 선언에서 둘 이상의 변수를 선언하는 경우 약간의 차이가 있습니다.

int[] a, b;  // Both a and b are arrays of type int
int c[], d;  // WARNING: c is an array, but d is just a regular int

컴파일러는 사용하려는 순간에 거의 확실하게 오류를 잡을 것입니다. d.

다른 점이 없다.

나는 선호한다 type[] name 형식은 변수가 배열이라는 것이 분명합니다 (그것이 무엇인지 알아 내기 위해 주변을 둘러 보는 것).

편집하다:

오, 차이가 있습니다 (한 번에 둘 이상의 변수를 선언하지 않기 때문에 잊어 버렸습니다) :

int[] foo, bar; // both are arrays
int foo[], bar; // foo is an array, bar is an int.

아니요, 이들은 동일합니다. 하지만

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[] arrayOne, arrayTwo; //both arrays

int arrayOne[], intOne; //one array one int 

보다: http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html

차이 없음.

인용 :

그만큼 [] 선언 시작시 유형의 일부 또는이 예제에서와 같이 특정 변수 또는 둘 다에 대한 선언자의 일부로 나타날 수 있습니다. byte[] rowvector, colvector, matrix[];

이 선언은 다음과 같습니다. byte rowvector[], colvector[], matrix[][];

둘 사이에는 아무런 차이가 없습니다. 둘 다 배열을 선언합니다 int에스. 그러나 전자는 유형 정보를 한 곳에 유지하기 때문에 선호됩니다. 후자는 C/C ++ 프로그래머가 Java로 이동하는 이점을 위해 실제로 지원됩니다.

실제 차이는 없습니다. 하지만,

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

그러나 협약은이 형태를 방해한다. 브래킷은 배열 유형을 식별하고 유형 지정으로 나타나야합니다.

마지막 단락에 주목하십시오.

제 3 자 튜토리얼이 아닌 공식 Sun/Oracle 자습서를 읽는 것이 좋습니다. 그렇지 않으면 나쁜 관행을 배우는 데 위험이 있습니다.

대체 형식으로 빌린 대체 형식입니다. C, Java가 기반을 둔

호기심으로, 거기에 있습니다 유효한 방법을 정의하는 방법 main Java의 방법 :

  • public static void main(String[] args)
  • public static void main(String args[])
  • public static void main(String... args)

차이는 없지만 Sun은 설명대로 유형 옆에 놓을 것을 권장합니다. 여기

가장 선호되는 옵션은입니다 int[] a - 왜냐하면 int[] 유형이고 a 이름입니다. (두 번째 옵션은 이와 동일하며 잘못 배치 된 공간이 있습니다)

기능적으로 그들 사이에는 차이가 없습니다.

그만큼 자바 언어 사양 말 :

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[][];

따라서 정확히 동일한 바이트 코드를 초래할 것입니다.

Java에서는 이것들이 단순히 같은 것을 말하는 다른 구문 방법입니다.

그들은 동일합니다. 하나는 다른 것보다 더 읽기 쉬운 것입니다.

그것들은 완전히 동등합니다. int [] array 선호하는 스타일입니다. int array[] 방금 동등한 C 호환 스타일로 제공됩니다.

둘 다 같은 의미를 가지고 있습니다. 그러나 이러한 변종의 존재는 다음을 허용합니다.

int[] a, b[];

이것은 다음과 같습니다.

int[] a;
int[][] b;

그러나 이것은 끔찍한 코딩 스타일이며 절대로 수행해서는 안됩니다.

두 스타일의 선언 사이의 기능에는 차이가 없습니다. 둘 다 int의 배열을 선언합니다.

하지만 int[] a 유형 정보를 함께 유지하고 더 장황하므로 선호합니다.

그것들은 동일하지만이 진술 사이에는 중요한 차이가 있습니다.

// 1.
int regular, array[];
// 2.
int[] regular, array;

1. 1. 일반은 2와 달리 int입니다.

따라서 두 번째 진술은 더 명확하기 때문에 선호됩니다. 첫 번째 형태는 또한 낙담합니다 Oracle에 대한이 튜토리얼.

이미 언급했듯이 큰 차이는 없습니다 (라인 당 하나의 변수 만 선언하는 경우).

주목하십시오 소나 퀴 베 두 번째 사건을 미성년자로 취급합니다 코드 냄새 :

배열 지정자 []는 변수가 아닌 유형에 있어야합니다 (Squid : S1197)

배열 지정자는 항상 더 나은 코드 가독성을 위해 유형에 위치해야합니다. 그렇지 않으면, 개발자는 변수가 배열인지 여부를 알아 보려면 유형과 변수 이름을 모두 살펴 봐야합니다.

비준수 코드 예제

int matrix[][];   // Noncompliant
int[] matrix[];   // Noncompliant

준수 솔루션

int[][] matrix;   // Compliant

네, 똑같습니다. 개인적으로, 나는 선호합니다

int[] integers; 

그것은 당신의 코드를 읽는 사람에게 정수가 int의 배열이라는 사람에게 즉시 명확하게하기 때문에

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

둘 다 괜찮습니다. 나는 하나를 골라 붙이는 것이 좋습니다. (나는 두 번째를한다)

동안 int integers[] C 언어의 솔루션 뿌리 (따라서 "정상적인"접근법으로 간주 될 수 있음) 많은 사람들이 발견합니다. int[] integers C 스타일 선언과 달리 한 선언에서 다른 유형 (예 : int 및 배열)의 변수를 생성하기 위해 더 논리적으로 더 논리적입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top